Fix for 57897, r=dveditz, a=ben

This commit is contained in:
hyatt%netscape.com 2000-11-02 21:28:00 +00:00
Родитель bb153ca860
Коммит da1cd7e64c
4 изменённых файлов: 46 добавлений и 2 удалений

Просмотреть файл

@ -102,6 +102,7 @@ DEFINE_RDF_VOCAB(CHROME_URI, CHROME, baseURL);
DEFINE_RDF_VOCAB(CHROME_URI, CHROME, packages);
DEFINE_RDF_VOCAB(CHROME_URI, CHROME, package);
DEFINE_RDF_VOCAB(CHROME_URI, CHROME, name);
DEFINE_RDF_VOCAB(CHROME_URI, CHROME, image);
DEFINE_RDF_VOCAB(CHROME_URI, CHROME, locType);
DEFINE_RDF_VOCAB(CHROME_URI, CHROME, allowScripts);
@ -253,6 +254,9 @@ nsChromeRegistry::nsChromeRegistry()
rv = mRDFService->GetResource(kURICHROME_name, getter_AddRefs(mName));
NS_ASSERTION(NS_SUCCEEDED(rv), "unable to get RDF resource");
rv = mRDFService->GetResource(kURICHROME_image, getter_AddRefs(mImage));
NS_ASSERTION(NS_SUCCEEDED(rv), "unable to get RDF resource");
rv = mRDFService->GetResource(kURICHROME_locType, getter_AddRefs(mLocType));
NS_ASSERTION(NS_SUCCEEDED(rv), "unable to get RDF resource");
@ -2041,11 +2045,28 @@ NS_IMETHODIMP nsChromeRegistry::InstallProvider(const nsCString& aProviderType,
rv = nsChromeRegistry::UpdateArc(installSource, resource, mLocType, locLiteral, aRemove);
if (NS_FAILED(rv)) return rv;
}
nsCOMPtr<nsIRDFNode> newTarget;
rv = dataSource->GetTarget(resource, arc, PR_TRUE, getter_AddRefs(newTarget));
if (NS_FAILED(rv)) return rv;
if (arc == mImage) {
// We are an image URL. Check to see if we're a relative URL.
nsCOMPtr<nsIRDFLiteral> literal(do_QueryInterface(newTarget));
if (literal) {
const PRUnichar* valueStr;
literal->GetValueConst(&valueStr);
nsAutoString imageURL(valueStr);
if (imageURL.FindChar(':') == -1) {
// We're relative. Prepend the base URL of the package.
nsAutoString fullURL; fullURL.AssignWithConversion(aBaseURL);
fullURL += imageURL;
mRDFService->GetLiteral(fullURL.GetUnicode(), getter_AddRefs(literal));
newTarget = do_QueryInterface(literal);
}
}
}
rv = nsChromeRegistry::UpdateArc(installSource, resource, arc, newTarget, aRemove);
if (NS_FAILED(rv)) return rv;

Просмотреть файл

@ -154,6 +154,7 @@ protected:
nsCOMPtr<nsIRDFResource> mPackages;
nsCOMPtr<nsIRDFResource> mPackage;
nsCOMPtr<nsIRDFResource> mName;
nsCOMPtr<nsIRDFResource> mImage;
nsCOMPtr<nsIRDFResource> mLocType;
nsCOMPtr<nsIRDFResource> mAllowScripts;

Просмотреть файл

@ -102,6 +102,7 @@ DEFINE_RDF_VOCAB(CHROME_URI, CHROME, baseURL);
DEFINE_RDF_VOCAB(CHROME_URI, CHROME, packages);
DEFINE_RDF_VOCAB(CHROME_URI, CHROME, package);
DEFINE_RDF_VOCAB(CHROME_URI, CHROME, name);
DEFINE_RDF_VOCAB(CHROME_URI, CHROME, image);
DEFINE_RDF_VOCAB(CHROME_URI, CHROME, locType);
DEFINE_RDF_VOCAB(CHROME_URI, CHROME, allowScripts);
@ -253,6 +254,9 @@ nsChromeRegistry::nsChromeRegistry()
rv = mRDFService->GetResource(kURICHROME_name, getter_AddRefs(mName));
NS_ASSERTION(NS_SUCCEEDED(rv), "unable to get RDF resource");
rv = mRDFService->GetResource(kURICHROME_image, getter_AddRefs(mImage));
NS_ASSERTION(NS_SUCCEEDED(rv), "unable to get RDF resource");
rv = mRDFService->GetResource(kURICHROME_locType, getter_AddRefs(mLocType));
NS_ASSERTION(NS_SUCCEEDED(rv), "unable to get RDF resource");
@ -2041,11 +2045,28 @@ NS_IMETHODIMP nsChromeRegistry::InstallProvider(const nsCString& aProviderType,
rv = nsChromeRegistry::UpdateArc(installSource, resource, mLocType, locLiteral, aRemove);
if (NS_FAILED(rv)) return rv;
}
nsCOMPtr<nsIRDFNode> newTarget;
rv = dataSource->GetTarget(resource, arc, PR_TRUE, getter_AddRefs(newTarget));
if (NS_FAILED(rv)) return rv;
if (arc == mImage) {
// We are an image URL. Check to see if we're a relative URL.
nsCOMPtr<nsIRDFLiteral> literal(do_QueryInterface(newTarget));
if (literal) {
const PRUnichar* valueStr;
literal->GetValueConst(&valueStr);
nsAutoString imageURL(valueStr);
if (imageURL.FindChar(':') == -1) {
// We're relative. Prepend the base URL of the package.
nsAutoString fullURL; fullURL.AssignWithConversion(aBaseURL);
fullURL += imageURL;
mRDFService->GetLiteral(fullURL.GetUnicode(), getter_AddRefs(literal));
newTarget = do_QueryInterface(literal);
}
}
}
rv = nsChromeRegistry::UpdateArc(installSource, resource, arc, newTarget, aRemove);
if (NS_FAILED(rv)) return rv;

Просмотреть файл

@ -154,6 +154,7 @@ protected:
nsCOMPtr<nsIRDFResource> mPackages;
nsCOMPtr<nsIRDFResource> mPackage;
nsCOMPtr<nsIRDFResource> mName;
nsCOMPtr<nsIRDFResource> mImage;
nsCOMPtr<nsIRDFResource> mLocType;
nsCOMPtr<nsIRDFResource> mAllowScripts;