зеркало из https://github.com/mozilla/gecko-dev.git
fix bug 160000 - custom.jar support for chrome
look for custom.jar in the chrome directory - if found, always check it first for files before using the rest of the chrome registry. This allows embeddors to override specific chrome URLs with their own files. sr=hyatt, r=chak
This commit is contained in:
Родитель
98438361a1
Коммит
4e0b59f695
|
@ -105,8 +105,8 @@ interface nsIXULChromeRegistry : nsIChromeRegistry {
|
|||
/* runtimeProvider == true: don't assert the runtime change */
|
||||
void setRuntimeProvider(in boolean runtimeProvider);
|
||||
|
||||
boolean checkThemeVersion(in wstring skinName);
|
||||
boolean checkLocaleVersion(in wstring localeName);
|
||||
boolean checkThemeVersion(in ACString skinName);
|
||||
boolean checkLocaleVersion(in ACString localeName);
|
||||
|
||||
/* Apply skin/locale to a specific package */
|
||||
void selectSkinForPackage(in ACString skinName,
|
||||
|
|
|
@ -539,6 +539,11 @@ nsChromeRegistry::ConvertChromeURL(nsIURI* aChromeURL, nsACString& aResult)
|
|||
}
|
||||
|
||||
nsCAutoString finalURL;
|
||||
|
||||
rv = GetOverrideURL(package, provider, remaining, finalURL);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return NS_OK;
|
||||
|
||||
rv = GetBaseURL(package, provider, finalURL);
|
||||
#ifdef DEBUG
|
||||
if (NS_FAILED(rv)) {
|
||||
|
@ -658,10 +663,122 @@ nsChromeRegistry::GetBaseURL(const nsACString& aPackage,
|
|||
}
|
||||
|
||||
// From this resource, follow the "baseURL" arc.
|
||||
return nsChromeRegistry::FollowArc(mChromeDataSource,
|
||||
aBaseURL,
|
||||
resource,
|
||||
mBaseURL);
|
||||
return FollowArc(mChromeDataSource, aBaseURL, resource, mBaseURL);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsChromeRegistry::GetOverrideURL(const nsACString& aPackage,
|
||||
const nsACString& aProvider,
|
||||
const nsACString& aPath,
|
||||
nsACString& aResult)
|
||||
{
|
||||
nsresult rv = InitOverrideJAR();
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// ok, if we get here, we have an override JAR
|
||||
|
||||
aResult.SetCapacity(mOverrideJARURL.Length() +
|
||||
aPackage.Length() +
|
||||
aProvider.Length() +
|
||||
aPath.Length() + 2);
|
||||
|
||||
aResult = mOverrideJARURL;
|
||||
aResult += aPackage;
|
||||
aResult += '/';
|
||||
aResult += aProvider;
|
||||
aResult += '/';
|
||||
|
||||
// skins and locales get their name tacked on, like
|
||||
// skin/modern/foo.css or
|
||||
// locale/en-US/navigator.properties
|
||||
if (aProvider.Equals(NS_LITERAL_CSTRING("skin")) ||
|
||||
aProvider.Equals(NS_LITERAL_CSTRING("locale"))) {
|
||||
|
||||
// little hack here to get the right arc
|
||||
nsIRDFResource* providerArc;
|
||||
if (aProvider.Equals("skin"))
|
||||
providerArc = mSelectedSkin;
|
||||
else
|
||||
providerArc = mSelectedLocale;
|
||||
|
||||
nsCAutoString selectedProvider;
|
||||
rv = GetSelectedProvider(aPackage, aProvider, providerArc, selectedProvider);
|
||||
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
aResult += selectedProvider;
|
||||
aResult += '/';
|
||||
}
|
||||
}
|
||||
|
||||
aResult += aPath;
|
||||
|
||||
nsCOMPtr<nsIZipEntry> zipEntry;
|
||||
rv = mOverrideJAR->GetEntry(PromiseFlatCString(aResult).get(),
|
||||
getter_AddRefs(zipEntry));
|
||||
if (NS_FAILED(rv)) {
|
||||
aResult.Truncate();
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsChromeRegistry::InitOverrideJAR()
|
||||
{
|
||||
// generic failure if we know there's no override
|
||||
if (mSearchedForOverride && !mOverrideJAR)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
mSearchedForOverride = PR_TRUE;
|
||||
|
||||
nsresult rv;
|
||||
//
|
||||
// look for custom.jar
|
||||
//
|
||||
nsCOMPtr<nsIFile> overrideFile;
|
||||
rv = GetInstallRoot(getter_AddRefs(overrideFile));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = overrideFile->AppendNative(NS_LITERAL_CSTRING("custom.jar"));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
PRBool exists;
|
||||
rv = overrideFile->Exists(&exists);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// ok, if the file doesn't exist, its just a generic failure
|
||||
if (!exists)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
//
|
||||
// cache the url so we can later append
|
||||
//
|
||||
mOverrideJARURL.Assign("jar:");
|
||||
nsCAutoString jarURL;
|
||||
rv = NS_GetURLSpecFromFile(overrideFile, jarURL);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
mOverrideJARURL.Append(jarURL);
|
||||
mOverrideJARURL.Append("!/");
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
//
|
||||
// also cache the zip file itself
|
||||
//
|
||||
nsCOMPtr<nsIZipReaderCache> readerCache =
|
||||
do_CreateInstance("@mozilla.org/libjar/zip-reader-cache;1", &rv);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = readerCache->Init(32);
|
||||
|
||||
rv = readerCache->GetZip(overrideFile, getter_AddRefs(mOverrideJAR));
|
||||
if (NS_FAILED(rv)) {
|
||||
mOverrideJARURL.Truncate();
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// locate
|
||||
|
@ -746,7 +863,7 @@ nsresult
|
|||
nsChromeRegistry::SelectPackageInProvider(nsIRDFResource *aPackageList,
|
||||
const nsACString& aPackage,
|
||||
const nsACString& aProvider,
|
||||
const nsCString& aProviderName,
|
||||
const nsACString& aProviderName,
|
||||
nsIRDFResource *aArc,
|
||||
nsIRDFNode **aSelectedProvider)
|
||||
{
|
||||
|
@ -2217,10 +2334,9 @@ nsChromeRegistry::InstallProvider(const nsACString& aProviderType,
|
|||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// Get the literal for our script access.
|
||||
nsAutoString scriptstr;
|
||||
scriptstr.Assign(NS_LITERAL_STRING("false"));
|
||||
nsCOMPtr<nsIRDFLiteral> scriptLiteral;
|
||||
rv = mRDFService->GetLiteral(scriptstr.get(), getter_AddRefs(scriptLiteral));
|
||||
rv = mRDFService->GetLiteral(NS_LITERAL_STRING("false").get(),
|
||||
getter_AddRefs(scriptLiteral));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// Build the prefix string. Only resources with this prefix string will have their
|
||||
|
@ -2639,8 +2755,8 @@ nsChromeRegistry::GetProfileRoot(nsACString& aFileURL)
|
|||
|
||||
// copy along
|
||||
// It aint an error if these files dont exist
|
||||
(void) defaultUserContentFile->CopyToNative(userChromeDir, nsCString());
|
||||
(void) defaultUserChromeFile->CopyToNative(userChromeDir, nsCString());
|
||||
(void) defaultUserContentFile->CopyToNative(userChromeDir, NS_LITERAL_CSTRING(""));
|
||||
(void) defaultUserChromeFile->CopyToNative(userChromeDir, NS_LITERAL_CSTRING(""));
|
||||
}
|
||||
}
|
||||
if (NS_FAILED(rv))
|
||||
|
@ -2713,7 +2829,7 @@ nsChromeRegistry::ReloadChrome()
|
|||
|
||||
nsresult
|
||||
nsChromeRegistry::GetArcs(nsIRDFDataSource* aDataSource,
|
||||
const nsCString& aType,
|
||||
const nsACString& aType,
|
||||
nsISimpleEnumerator** aResult)
|
||||
{
|
||||
nsCOMPtr<nsIRDFContainer> container;
|
||||
|
@ -2803,7 +2919,7 @@ nsChromeRegistry::GetAgentSheets(nsIDocShell* aDocShell, nsISupportsArray **aRes
|
|||
elt->GetAttribute(NS_LITERAL_STRING("usechromesheets"), sheets);
|
||||
if (!sheets.IsEmpty()) {
|
||||
// Construct the URIs and try to load each sheet.
|
||||
nsCAutoString sheetsStr; sheetsStr.AssignWithConversion(sheets);
|
||||
|
||||
char* str = ToNewCString(sheets);
|
||||
char* newStr;
|
||||
char* token = nsCRT::strtok( str, ", ", &newStr );
|
||||
|
@ -2919,7 +3035,7 @@ nsresult nsChromeRegistry::GetUserSheetURL(PRBool aIsChrome, nsACString & aURL)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsChromeRegistry::GetFormSheetURL(nsCString& aURL)
|
||||
nsresult nsChromeRegistry::GetFormSheetURL(nsACString& aURL)
|
||||
{
|
||||
aURL = mUseXBLForms ? "chrome://forms/skin/forms.css" : "resource:/res/forms.css";
|
||||
|
||||
|
@ -3310,14 +3426,14 @@ NS_IMETHODIMP nsChromeRegistry::Observe(nsISupports *aSubject, const char *aTopi
|
|||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsChromeRegistry::CheckThemeVersion(const PRUnichar *aSkin,
|
||||
NS_IMETHODIMP nsChromeRegistry::CheckThemeVersion(const nsACString& aSkin,
|
||||
PRBool* aResult)
|
||||
{
|
||||
return CheckProviderVersion(NS_LITERAL_CSTRING("skin"), aSkin, mSkinVersion, aResult);
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsChromeRegistry::CheckLocaleVersion(const PRUnichar *aLocale,
|
||||
NS_IMETHODIMP nsChromeRegistry::CheckLocaleVersion(const nsACString& aLocale,
|
||||
PRBool* aResult)
|
||||
{
|
||||
nsCAutoString provider("locale");
|
||||
|
@ -3327,7 +3443,7 @@ NS_IMETHODIMP nsChromeRegistry::CheckLocaleVersion(const PRUnichar *aLocale,
|
|||
|
||||
nsresult
|
||||
nsChromeRegistry::CheckProviderVersion (const nsACString& aProviderType,
|
||||
const PRUnichar* aProviderName,
|
||||
const nsACString& aProviderName,
|
||||
nsIRDFResource* aSelectionArc,
|
||||
PRBool *aCompatible)
|
||||
{
|
||||
|
@ -3338,7 +3454,7 @@ nsChromeRegistry::CheckProviderVersion (const nsACString& aProviderType,
|
|||
nsCAutoString resourceStr( "urn:mozilla:" );
|
||||
resourceStr += aProviderType;
|
||||
resourceStr += ":";
|
||||
resourceStr.AppendWithConversion(aProviderName);
|
||||
resourceStr += aProviderName;
|
||||
|
||||
// Obtain the provider resource.
|
||||
nsresult rv = NS_OK;
|
||||
|
|
|
@ -53,7 +53,7 @@ class nsIDocument;
|
|||
#include "nsIObserver.h"
|
||||
#include "nsWeakReference.h"
|
||||
#include "nsString.h"
|
||||
|
||||
#include "nsIZipReader.h"
|
||||
|
||||
// for component registration
|
||||
// {D8C7D8A2-E84C-11d2-BF87-00105A1B0627}
|
||||
|
@ -111,7 +111,7 @@ protected:
|
|||
nsresult LoadStyleSheetWithURL(nsIURI* aURL, nsICSSStyleSheet** aSheet);
|
||||
|
||||
nsresult GetUserSheetURL(PRBool aIsChrome, nsACString & aURL);
|
||||
nsresult GetFormSheetURL(nsCString& aURL);
|
||||
nsresult GetFormSheetURL(nsACString& aURL);
|
||||
|
||||
nsresult LoadInstallDataSource();
|
||||
nsresult LoadProfileDataSource();
|
||||
|
@ -130,7 +130,7 @@ private:
|
|||
nsresult RefreshWindow(nsIDOMWindowInternal* aWindow);
|
||||
|
||||
nsresult GetArcs(nsIRDFDataSource* aDataSource,
|
||||
const nsCString& aType,
|
||||
const nsACString& aType,
|
||||
nsISimpleEnumerator** aResult);
|
||||
|
||||
nsresult AddToCompositeDataSource(PRBool aUseProfile);
|
||||
|
@ -139,6 +139,12 @@ private:
|
|||
const nsACString& aProvider,
|
||||
nsACString& aBaseURL);
|
||||
|
||||
nsresult InitOverrideJAR();
|
||||
nsresult GetOverrideURL(const nsACString& aPackage,
|
||||
const nsACString& aProvider,
|
||||
const nsACString& aPath,
|
||||
nsACString& aResult);
|
||||
|
||||
nsresult FindProvider(const nsACString& aPackage,
|
||||
const nsACString& aProvider,
|
||||
nsIRDFResource *aArc,
|
||||
|
@ -147,7 +153,7 @@ private:
|
|||
nsresult SelectPackageInProvider(nsIRDFResource *aPackageList,
|
||||
const nsACString& aPackage,
|
||||
const nsACString& aProvider,
|
||||
const nsCString& aProviderName,
|
||||
const nsACString& aProviderName,
|
||||
nsIRDFResource *aArc,
|
||||
nsIRDFNode **aSelectedProvider);
|
||||
|
||||
|
@ -177,7 +183,7 @@ private:
|
|||
nsACString& aResult);
|
||||
|
||||
nsresult CheckProviderVersion (const nsACString& aProviderType,
|
||||
const PRUnichar* aProviderName,
|
||||
const nsACString& aProviderName,
|
||||
nsIRDFResource* aSelectionArc,
|
||||
PRBool *aCompatible);
|
||||
|
||||
|
@ -238,6 +244,9 @@ protected:
|
|||
nsCOMPtr<nsICSSStyleSheet> mUserChromeSheet;
|
||||
nsCOMPtr<nsICSSStyleSheet> mUserContentSheet;
|
||||
nsCOMPtr<nsICSSStyleSheet> mFormSheet;
|
||||
|
||||
nsCOMPtr<nsIZipReader> mOverrideJAR;
|
||||
nsCString mOverrideJARURL;
|
||||
|
||||
PRBool mUseXBLForms;
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@ REQUIRES = xpcom \
|
|||
rdf \
|
||||
necko \
|
||||
content \
|
||||
jar \
|
||||
$(NULL)
|
||||
|
||||
CPPSRCS = nsChromeFactory.cpp
|
||||
|
|
|
@ -105,8 +105,8 @@ interface nsIXULChromeRegistry : nsIChromeRegistry {
|
|||
/* runtimeProvider == true: don't assert the runtime change */
|
||||
void setRuntimeProvider(in boolean runtimeProvider);
|
||||
|
||||
boolean checkThemeVersion(in wstring skinName);
|
||||
boolean checkLocaleVersion(in wstring localeName);
|
||||
boolean checkThemeVersion(in ACString skinName);
|
||||
boolean checkLocaleVersion(in ACString localeName);
|
||||
|
||||
/* Apply skin/locale to a specific package */
|
||||
void selectSkinForPackage(in ACString skinName,
|
||||
|
|
|
@ -46,6 +46,7 @@ REQUIRES = xpcom \
|
|||
docshell \
|
||||
imglib2 \
|
||||
xpconnect \
|
||||
jar \
|
||||
$(NULL)
|
||||
|
||||
CPPSRCS = \
|
||||
|
|
|
@ -539,6 +539,11 @@ nsChromeRegistry::ConvertChromeURL(nsIURI* aChromeURL, nsACString& aResult)
|
|||
}
|
||||
|
||||
nsCAutoString finalURL;
|
||||
|
||||
rv = GetOverrideURL(package, provider, remaining, finalURL);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return NS_OK;
|
||||
|
||||
rv = GetBaseURL(package, provider, finalURL);
|
||||
#ifdef DEBUG
|
||||
if (NS_FAILED(rv)) {
|
||||
|
@ -658,10 +663,122 @@ nsChromeRegistry::GetBaseURL(const nsACString& aPackage,
|
|||
}
|
||||
|
||||
// From this resource, follow the "baseURL" arc.
|
||||
return nsChromeRegistry::FollowArc(mChromeDataSource,
|
||||
aBaseURL,
|
||||
resource,
|
||||
mBaseURL);
|
||||
return FollowArc(mChromeDataSource, aBaseURL, resource, mBaseURL);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsChromeRegistry::GetOverrideURL(const nsACString& aPackage,
|
||||
const nsACString& aProvider,
|
||||
const nsACString& aPath,
|
||||
nsACString& aResult)
|
||||
{
|
||||
nsresult rv = InitOverrideJAR();
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// ok, if we get here, we have an override JAR
|
||||
|
||||
aResult.SetCapacity(mOverrideJARURL.Length() +
|
||||
aPackage.Length() +
|
||||
aProvider.Length() +
|
||||
aPath.Length() + 2);
|
||||
|
||||
aResult = mOverrideJARURL;
|
||||
aResult += aPackage;
|
||||
aResult += '/';
|
||||
aResult += aProvider;
|
||||
aResult += '/';
|
||||
|
||||
// skins and locales get their name tacked on, like
|
||||
// skin/modern/foo.css or
|
||||
// locale/en-US/navigator.properties
|
||||
if (aProvider.Equals(NS_LITERAL_CSTRING("skin")) ||
|
||||
aProvider.Equals(NS_LITERAL_CSTRING("locale"))) {
|
||||
|
||||
// little hack here to get the right arc
|
||||
nsIRDFResource* providerArc;
|
||||
if (aProvider.Equals("skin"))
|
||||
providerArc = mSelectedSkin;
|
||||
else
|
||||
providerArc = mSelectedLocale;
|
||||
|
||||
nsCAutoString selectedProvider;
|
||||
rv = GetSelectedProvider(aPackage, aProvider, providerArc, selectedProvider);
|
||||
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
aResult += selectedProvider;
|
||||
aResult += '/';
|
||||
}
|
||||
}
|
||||
|
||||
aResult += aPath;
|
||||
|
||||
nsCOMPtr<nsIZipEntry> zipEntry;
|
||||
rv = mOverrideJAR->GetEntry(PromiseFlatCString(aResult).get(),
|
||||
getter_AddRefs(zipEntry));
|
||||
if (NS_FAILED(rv)) {
|
||||
aResult.Truncate();
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsChromeRegistry::InitOverrideJAR()
|
||||
{
|
||||
// generic failure if we know there's no override
|
||||
if (mSearchedForOverride && !mOverrideJAR)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
mSearchedForOverride = PR_TRUE;
|
||||
|
||||
nsresult rv;
|
||||
//
|
||||
// look for custom.jar
|
||||
//
|
||||
nsCOMPtr<nsIFile> overrideFile;
|
||||
rv = GetInstallRoot(getter_AddRefs(overrideFile));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = overrideFile->AppendNative(NS_LITERAL_CSTRING("custom.jar"));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
PRBool exists;
|
||||
rv = overrideFile->Exists(&exists);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// ok, if the file doesn't exist, its just a generic failure
|
||||
if (!exists)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
//
|
||||
// cache the url so we can later append
|
||||
//
|
||||
mOverrideJARURL.Assign("jar:");
|
||||
nsCAutoString jarURL;
|
||||
rv = NS_GetURLSpecFromFile(overrideFile, jarURL);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
mOverrideJARURL.Append(jarURL);
|
||||
mOverrideJARURL.Append("!/");
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
//
|
||||
// also cache the zip file itself
|
||||
//
|
||||
nsCOMPtr<nsIZipReaderCache> readerCache =
|
||||
do_CreateInstance("@mozilla.org/libjar/zip-reader-cache;1", &rv);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = readerCache->Init(32);
|
||||
|
||||
rv = readerCache->GetZip(overrideFile, getter_AddRefs(mOverrideJAR));
|
||||
if (NS_FAILED(rv)) {
|
||||
mOverrideJARURL.Truncate();
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// locate
|
||||
|
@ -746,7 +863,7 @@ nsresult
|
|||
nsChromeRegistry::SelectPackageInProvider(nsIRDFResource *aPackageList,
|
||||
const nsACString& aPackage,
|
||||
const nsACString& aProvider,
|
||||
const nsCString& aProviderName,
|
||||
const nsACString& aProviderName,
|
||||
nsIRDFResource *aArc,
|
||||
nsIRDFNode **aSelectedProvider)
|
||||
{
|
||||
|
@ -2217,10 +2334,9 @@ nsChromeRegistry::InstallProvider(const nsACString& aProviderType,
|
|||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// Get the literal for our script access.
|
||||
nsAutoString scriptstr;
|
||||
scriptstr.Assign(NS_LITERAL_STRING("false"));
|
||||
nsCOMPtr<nsIRDFLiteral> scriptLiteral;
|
||||
rv = mRDFService->GetLiteral(scriptstr.get(), getter_AddRefs(scriptLiteral));
|
||||
rv = mRDFService->GetLiteral(NS_LITERAL_STRING("false").get(),
|
||||
getter_AddRefs(scriptLiteral));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// Build the prefix string. Only resources with this prefix string will have their
|
||||
|
@ -2639,8 +2755,8 @@ nsChromeRegistry::GetProfileRoot(nsACString& aFileURL)
|
|||
|
||||
// copy along
|
||||
// It aint an error if these files dont exist
|
||||
(void) defaultUserContentFile->CopyToNative(userChromeDir, nsCString());
|
||||
(void) defaultUserChromeFile->CopyToNative(userChromeDir, nsCString());
|
||||
(void) defaultUserContentFile->CopyToNative(userChromeDir, NS_LITERAL_CSTRING(""));
|
||||
(void) defaultUserChromeFile->CopyToNative(userChromeDir, NS_LITERAL_CSTRING(""));
|
||||
}
|
||||
}
|
||||
if (NS_FAILED(rv))
|
||||
|
@ -2713,7 +2829,7 @@ nsChromeRegistry::ReloadChrome()
|
|||
|
||||
nsresult
|
||||
nsChromeRegistry::GetArcs(nsIRDFDataSource* aDataSource,
|
||||
const nsCString& aType,
|
||||
const nsACString& aType,
|
||||
nsISimpleEnumerator** aResult)
|
||||
{
|
||||
nsCOMPtr<nsIRDFContainer> container;
|
||||
|
@ -2803,7 +2919,7 @@ nsChromeRegistry::GetAgentSheets(nsIDocShell* aDocShell, nsISupportsArray **aRes
|
|||
elt->GetAttribute(NS_LITERAL_STRING("usechromesheets"), sheets);
|
||||
if (!sheets.IsEmpty()) {
|
||||
// Construct the URIs and try to load each sheet.
|
||||
nsCAutoString sheetsStr; sheetsStr.AssignWithConversion(sheets);
|
||||
|
||||
char* str = ToNewCString(sheets);
|
||||
char* newStr;
|
||||
char* token = nsCRT::strtok( str, ", ", &newStr );
|
||||
|
@ -2919,7 +3035,7 @@ nsresult nsChromeRegistry::GetUserSheetURL(PRBool aIsChrome, nsACString & aURL)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsChromeRegistry::GetFormSheetURL(nsCString& aURL)
|
||||
nsresult nsChromeRegistry::GetFormSheetURL(nsACString& aURL)
|
||||
{
|
||||
aURL = mUseXBLForms ? "chrome://forms/skin/forms.css" : "resource:/res/forms.css";
|
||||
|
||||
|
@ -3310,14 +3426,14 @@ NS_IMETHODIMP nsChromeRegistry::Observe(nsISupports *aSubject, const char *aTopi
|
|||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsChromeRegistry::CheckThemeVersion(const PRUnichar *aSkin,
|
||||
NS_IMETHODIMP nsChromeRegistry::CheckThemeVersion(const nsACString& aSkin,
|
||||
PRBool* aResult)
|
||||
{
|
||||
return CheckProviderVersion(NS_LITERAL_CSTRING("skin"), aSkin, mSkinVersion, aResult);
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsChromeRegistry::CheckLocaleVersion(const PRUnichar *aLocale,
|
||||
NS_IMETHODIMP nsChromeRegistry::CheckLocaleVersion(const nsACString& aLocale,
|
||||
PRBool* aResult)
|
||||
{
|
||||
nsCAutoString provider("locale");
|
||||
|
@ -3327,7 +3443,7 @@ NS_IMETHODIMP nsChromeRegistry::CheckLocaleVersion(const PRUnichar *aLocale,
|
|||
|
||||
nsresult
|
||||
nsChromeRegistry::CheckProviderVersion (const nsACString& aProviderType,
|
||||
const PRUnichar* aProviderName,
|
||||
const nsACString& aProviderName,
|
||||
nsIRDFResource* aSelectionArc,
|
||||
PRBool *aCompatible)
|
||||
{
|
||||
|
@ -3338,7 +3454,7 @@ nsChromeRegistry::CheckProviderVersion (const nsACString& aProviderType,
|
|||
nsCAutoString resourceStr( "urn:mozilla:" );
|
||||
resourceStr += aProviderType;
|
||||
resourceStr += ":";
|
||||
resourceStr.AppendWithConversion(aProviderName);
|
||||
resourceStr += aProviderName;
|
||||
|
||||
// Obtain the provider resource.
|
||||
nsresult rv = NS_OK;
|
||||
|
|
|
@ -53,7 +53,7 @@ class nsIDocument;
|
|||
#include "nsIObserver.h"
|
||||
#include "nsWeakReference.h"
|
||||
#include "nsString.h"
|
||||
|
||||
#include "nsIZipReader.h"
|
||||
|
||||
// for component registration
|
||||
// {D8C7D8A2-E84C-11d2-BF87-00105A1B0627}
|
||||
|
@ -111,7 +111,7 @@ protected:
|
|||
nsresult LoadStyleSheetWithURL(nsIURI* aURL, nsICSSStyleSheet** aSheet);
|
||||
|
||||
nsresult GetUserSheetURL(PRBool aIsChrome, nsACString & aURL);
|
||||
nsresult GetFormSheetURL(nsCString& aURL);
|
||||
nsresult GetFormSheetURL(nsACString& aURL);
|
||||
|
||||
nsresult LoadInstallDataSource();
|
||||
nsresult LoadProfileDataSource();
|
||||
|
@ -130,7 +130,7 @@ private:
|
|||
nsresult RefreshWindow(nsIDOMWindowInternal* aWindow);
|
||||
|
||||
nsresult GetArcs(nsIRDFDataSource* aDataSource,
|
||||
const nsCString& aType,
|
||||
const nsACString& aType,
|
||||
nsISimpleEnumerator** aResult);
|
||||
|
||||
nsresult AddToCompositeDataSource(PRBool aUseProfile);
|
||||
|
@ -139,6 +139,12 @@ private:
|
|||
const nsACString& aProvider,
|
||||
nsACString& aBaseURL);
|
||||
|
||||
nsresult InitOverrideJAR();
|
||||
nsresult GetOverrideURL(const nsACString& aPackage,
|
||||
const nsACString& aProvider,
|
||||
const nsACString& aPath,
|
||||
nsACString& aResult);
|
||||
|
||||
nsresult FindProvider(const nsACString& aPackage,
|
||||
const nsACString& aProvider,
|
||||
nsIRDFResource *aArc,
|
||||
|
@ -147,7 +153,7 @@ private:
|
|||
nsresult SelectPackageInProvider(nsIRDFResource *aPackageList,
|
||||
const nsACString& aPackage,
|
||||
const nsACString& aProvider,
|
||||
const nsCString& aProviderName,
|
||||
const nsACString& aProviderName,
|
||||
nsIRDFResource *aArc,
|
||||
nsIRDFNode **aSelectedProvider);
|
||||
|
||||
|
@ -177,7 +183,7 @@ private:
|
|||
nsACString& aResult);
|
||||
|
||||
nsresult CheckProviderVersion (const nsACString& aProviderType,
|
||||
const PRUnichar* aProviderName,
|
||||
const nsACString& aProviderName,
|
||||
nsIRDFResource* aSelectionArc,
|
||||
PRBool *aCompatible);
|
||||
|
||||
|
@ -238,6 +244,9 @@ protected:
|
|||
nsCOMPtr<nsICSSStyleSheet> mUserChromeSheet;
|
||||
nsCOMPtr<nsICSSStyleSheet> mUserContentSheet;
|
||||
nsCOMPtr<nsICSSStyleSheet> mFormSheet;
|
||||
|
||||
nsCOMPtr<nsIZipReader> mOverrideJAR;
|
||||
nsCString mOverrideJARURL;
|
||||
|
||||
PRBool mUseXBLForms;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче