From 8a0bd8eab2b1b44aa7e0387df74dd2c92ee467be Mon Sep 17 00:00:00 2001 From: "doronr%us.ibm.com" Date: Wed, 4 May 2005 16:59:23 +0000 Subject: [PATCH] Bug 292637 - nsSchemaLoader can only load http/https urls. r=biesi,sr=jst,a=mkaply git-svn-id: svn://10.0.0.236/trunk@173038 18797224-902f-48f8-a5cc-f745e15eee43 --- .../webservices/schema/src/nsSchemaLoader.cpp | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/mozilla/extensions/webservices/schema/src/nsSchemaLoader.cpp b/mozilla/extensions/webservices/schema/src/nsSchemaLoader.cpp index 2ca3b6ccee4..57cc0051429 100644 --- a/mozilla/extensions/webservices/schema/src/nsSchemaLoader.cpp +++ b/mozilla/extensions/webservices/schema/src/nsSchemaLoader.cpp @@ -143,13 +143,29 @@ LoadListener::HandleEvent(nsIDOMEvent *event) nsAutoString eventType; event->GetType(eventType); - if ((httpStatus / 100 == 2) && eventType.EqualsLiteral("load")) { + PRBool succeeded = (httpStatus / 100 == 2); + + // if we loaded fine, and not http/https, we assume success in loaded the file. + if (!succeeded && eventType.EqualsLiteral("load")) { + nsCOMPtr channel; + mRequest->GetChannel(getter_AddRefs(channel)); + if (channel) { + nsCOMPtr httpChannel(do_QueryInterface(channel)); + + // if qi to httpChannel fails, it isn't a http:// or https:// request + if (!httpChannel) { + succeeded = PR_TRUE; + } + } + } + + if (succeeded && eventType.EqualsLiteral("load")) { nsCOMPtr document; - + rv = mRequest->GetResponseXML(getter_AddRefs(document)); if (NS_SUCCEEDED(rv)) { nsCOMPtr element; - + if (document) document->GetDocumentElement(getter_AddRefs(element));