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:
@@ -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);
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user