diff --git a/mozilla/extensions/webservices/public/nsISchemaLoader.idl b/mozilla/extensions/webservices/public/nsISchemaLoader.idl index 4855b47004e..8edc3c2c633 100644 --- a/mozilla/extensions/webservices/public/nsISchemaLoader.idl +++ b/mozilla/extensions/webservices/public/nsISchemaLoader.idl @@ -42,11 +42,12 @@ interface nsISchema; interface nsISchemaType; interface nsIDOMElement; interface nsISchemaLoadListener; +interface nsIURI; [scriptable, uuid(3c14a032-6f4e-11d5-9b46-000064657374)] interface nsISchemaLoader : nsISupports { - nsISchema load(in AString schemaURI); - void loadAsync(in AString schemaURI, + nsISchema load(in AString schemaURI, in nsIURI baseURI); + void loadAsync(in AString schemaURI, in nsIURI baseURI, in nsISchemaLoadListener listener); nsISchema processSchemaElement(in nsIDOMElement element); }; diff --git a/mozilla/extensions/webservices/schema/src/nsSchemaLoader.cpp b/mozilla/extensions/webservices/schema/src/nsSchemaLoader.cpp index 6b16c5ba77a..93365aa8f16 100644 --- a/mozilla/extensions/webservices/schema/src/nsSchemaLoader.cpp +++ b/mozilla/extensions/webservices/schema/src/nsSchemaLoader.cpp @@ -576,6 +576,7 @@ nsSchemaLoader::GetType(const nsAString & aName, nsresult nsSchemaLoader::GetResolvedURI(const nsAString& aSchemaURI, + nsIURI *aBaseURI, const char* aMethod, nsIURI** aURI) { @@ -595,12 +596,16 @@ nsSchemaLoader::GetResolvedURI(const nsAString& aSchemaURI, if (NS_FAILED(rv)) return rv; nsCOMPtr baseURI; - nsCOMPtr principal; - rv = secMan->GetSubjectPrincipal(getter_AddRefs(principal)); - if (NS_SUCCEEDED(rv)) { - principal->GetURI(getter_AddRefs(baseURI)); + if (aBaseURI) { + baseURI = aBaseURI; + } else { + nsCOMPtr principal; + rv = secMan->GetSubjectPrincipal(getter_AddRefs(principal)); + if (NS_SUCCEEDED(rv)) { + principal->GetURI(getter_AddRefs(baseURI)); + } } - + rv = NS_NewURI(aURI, aSchemaURI, nsnull, baseURI); if (NS_FAILED(rv)) return rv; @@ -614,22 +619,24 @@ nsSchemaLoader::GetResolvedURI(const nsAString& aSchemaURI, } } else { - rv = NS_NewURI(aURI, aSchemaURI, nsnull); + rv = NS_NewURI(aURI, aSchemaURI, nsnull, aBaseURI); if (NS_FAILED(rv)) return rv; } return NS_OK; } -/* nsISchema load (in AString schemaURI); */ +/* nsISchema load (in AString schemaURI, in nsIURI baseURI); */ NS_IMETHODIMP nsSchemaLoader::Load(const nsAString& schemaURI, + nsIURI *aBaseURI, nsISchema **_retval) { NS_ENSURE_ARG_POINTER(_retval); nsCOMPtr resolvedURI; - nsresult rv = GetResolvedURI(schemaURI, "load", getter_AddRefs(resolvedURI)); + nsresult rv = GetResolvedURI(schemaURI, aBaseURI, + "load", getter_AddRefs(resolvedURI)); if (NS_FAILED(rv)) { return rv; } @@ -677,15 +684,17 @@ nsSchemaLoader::Load(const nsAString& schemaURI, return rv; } -/* void loadAsync (in AString schemaURI, in nsISchemaLoadListener listener); */ -NS_IMETHODIMP -nsSchemaLoader::LoadAsync(const nsAString& schemaURI, +/* void loadAsync (in AString schemaURI, + in nsIURI baseURI, in nsISchemaLoadListener listener); */ +NS_IMETHODIMP +nsSchemaLoader::LoadAsync(const nsAString& schemaURI, nsIURI *aBaseURI, nsISchemaLoadListener *aListener) { NS_ENSURE_ARG(aListener); nsCOMPtr resolvedURI; - nsresult rv = GetResolvedURI(schemaURI, "loadAsync", getter_AddRefs(resolvedURI)); + nsresult rv = GetResolvedURI(schemaURI, aBaseURI, + "loadAsync", getter_AddRefs(resolvedURI)); if (NS_FAILED(rv)) { return rv; } diff --git a/mozilla/extensions/webservices/schema/src/nsSchemaLoader.h b/mozilla/extensions/webservices/schema/src/nsSchemaLoader.h index 6127fc28352..96a54f74c8d 100644 --- a/mozilla/extensions/webservices/schema/src/nsSchemaLoader.h +++ b/mozilla/extensions/webservices/schema/src/nsSchemaLoader.h @@ -186,7 +186,7 @@ protected: PRUint32* aMinOccurs, PRUint32* aMaxOccurs); - nsresult GetResolvedURI(const nsAString& aSchemaURI, + nsresult GetResolvedURI(const nsAString& aSchemaURI, nsIURI *aBaseURI, const char* aMethod, nsIURI** aURI); nsresult ParseArrayType(nsSchema* aSchema, diff --git a/mozilla/toolkit/mozapps/extensions/src/soapupdater.js b/mozilla/toolkit/mozapps/extensions/src/soapupdater.js index 0cd638ccfa2..1ea0900a403 100644 --- a/mozilla/toolkit/mozapps/extensions/src/soapupdater.js +++ b/mozilla/toolkit/mozapps/extensions/src/soapupdater.js @@ -45,7 +45,7 @@ nsExtensionUpdater2.prototype = { var schemaLoader = Components.classes["@mozilla.org/xmlextras/schemas/schemaloader;1"] .createInstance(Components.interfaces.nsISchemaLoader); var schemaLoaderListener = new SchemaLoaderListener(this); - schemaLoader.loadAsync("http://www.bengoodger.com/software/mb/umo/types.xsd", + schemaLoader.loadAsync("http://www.bengoodger.com/software/mb/umo/types.xsd", nsnull, schemaLoaderListener); },