Add base URI parameter to nsISchemaLoader Load/LoadAsync.

git-svn-id: svn://10.0.0.236/branches/FORMS_20040722_BRANCH@159882 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bryner%brianryner.com
2004-07-26 23:26:15 +00:00
parent 603e9b05f3
commit 762336bd9c
4 changed files with 26 additions and 16 deletions

View File

@@ -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);
};

View File

@@ -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<nsIURI> baseURI;
nsCOMPtr<nsIPrincipal> principal;
rv = secMan->GetSubjectPrincipal(getter_AddRefs(principal));
if (NS_SUCCEEDED(rv)) {
principal->GetURI(getter_AddRefs(baseURI));
if (aBaseURI) {
baseURI = aBaseURI;
} else {
nsCOMPtr<nsIPrincipal> 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<nsIURI> 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<nsIURI> resolvedURI;
nsresult rv = GetResolvedURI(schemaURI, "loadAsync", getter_AddRefs(resolvedURI));
nsresult rv = GetResolvedURI(schemaURI, aBaseURI,
"loadAsync", getter_AddRefs(resolvedURI));
if (NS_FAILED(rv)) {
return rv;
}

View File

@@ -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,

View File

@@ -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);
},