Bug 546941. Make sure to load the scrollbars sheet with a

case-sensitive cssloader. r=dbaron


git-svn-id: svn://10.0.0.236/trunk@259798 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bzbarsky%mit.edu 2010-02-24 05:23:44 +00:00
parent 8eff14968e
commit 9dfe0c6f82
3 changed files with 26 additions and 10 deletions

View File

@ -886,6 +886,7 @@ NS_IMETHODIMP nsChromeRegistry::RefreshSkins()
do_CreateInstance(kCSSLoaderCID);
if (!cssLoader)
return NS_OK;
cssLoader->SetCaseSensitive(PR_TRUE);
nsCOMPtr<nsIWindowMediator> windowMediator
(do_GetService(NS_WINDOWMEDIATOR_CONTRACTID));

View File

@ -84,7 +84,7 @@ nsLayoutStylesheetCache::ScrollbarsSheet()
// Scrollbars don't need access to unsafe rules
if (sheetURI)
LoadSheet(sheetURI, gStyleCache->mScrollbarsSheet, PR_FALSE);
LoadSheet(sheetURI, gStyleCache->mScrollbarsSheet, PR_FALSE, PR_TRUE);
NS_ASSERTION(gStyleCache->mScrollbarsSheet, "Could not load scrollbars.css.");
}
@ -105,7 +105,7 @@ nsLayoutStylesheetCache::FormsSheet()
// forms.css needs access to unsafe rules
if (sheetURI)
LoadSheet(sheetURI, gStyleCache->mFormsSheet, PR_TRUE);
LoadSheet(sheetURI, gStyleCache->mFormsSheet, PR_TRUE, PR_FALSE);
NS_ASSERTION(gStyleCache->mFormsSheet, "Could not load forms.css.");
}
@ -137,6 +137,7 @@ void
nsLayoutStylesheetCache::Shutdown()
{
NS_IF_RELEASE(gCSSLoader);
NS_IF_RELEASE(gCaseSensitiveCSSLoader);
NS_IF_RELEASE(gStyleCache);
}
@ -159,6 +160,7 @@ nsLayoutStylesheetCache::nsLayoutStylesheetCache()
nsLayoutStylesheetCache::~nsLayoutStylesheetCache()
{
gCSSLoader = nsnull;
gCaseSensitiveCSSLoader = nsnull;
gStyleCache = nsnull;
}
@ -207,24 +209,32 @@ nsLayoutStylesheetCache::LoadSheetFile(nsIFile* aFile, nsCOMPtr<nsICSSStyleSheet
nsCOMPtr<nsIURI> uri;
NS_NewFileURI(getter_AddRefs(uri), aFile);
LoadSheet(uri, aSheet, PR_FALSE);
LoadSheet(uri, aSheet, PR_FALSE, PR_FALSE);
}
void
nsLayoutStylesheetCache::LoadSheet(nsIURI* aURI, nsCOMPtr<nsICSSStyleSheet> &aSheet,
PRBool aEnableUnsafeRules)
PRBool aEnableUnsafeRules,
PRBool aUseCaseSensitiveLoader)
{
if (!aURI) {
NS_ERROR("Null URI. Out of memory?");
return;
}
if (!gCSSLoader)
NS_NewCSSLoader(&gCSSLoader);
nsICSSLoader_1_9_0_BRANCH** cssLoader =
aUseCaseSensitiveLoader ? &gCaseSensitiveCSSLoader : &gCSSLoader;
if (gCSSLoader) {
gCSSLoader->LoadSheetSync(aURI, aEnableUnsafeRules, PR_TRUE,
getter_AddRefs(aSheet));
if (!*cssLoader) {
NS_NewCSSLoader(cssLoader);
if (aUseCaseSensitiveLoader) {
(*cssLoader)->SetCaseSensitive(PR_TRUE);
}
}
if (*cssLoader) {
(*cssLoader)->LoadSheetSync(aURI, aEnableUnsafeRules, PR_TRUE,
getter_AddRefs(aSheet));
}
}
@ -233,3 +243,6 @@ nsLayoutStylesheetCache::gStyleCache = nsnull;
nsICSSLoader_1_9_0_BRANCH*
nsLayoutStylesheetCache::gCSSLoader = nsnull;
nsICSSLoader_1_9_0_BRANCH*
nsLayoutStylesheetCache::gCaseSensitiveCSSLoader = nsnull;

View File

@ -67,10 +67,12 @@ private:
void InitFromProfile();
static void LoadSheetFile(nsIFile* aFile, nsCOMPtr<nsICSSStyleSheet> &aSheet);
static void LoadSheet(nsIURI* aURI, nsCOMPtr<nsICSSStyleSheet> &aSheet,
PRBool aEnableUnsafeRules);
PRBool aEnableUnsafeRules,
PRBool aUseCaseSensitiveLoader);
static nsLayoutStylesheetCache* gStyleCache;
static nsICSSLoader_1_9_0_BRANCH* gCSSLoader;
static nsICSSLoader_1_9_0_BRANCH* gCaseSensitiveCSSLoader;
nsCOMPtr<nsICSSStyleSheet> mScrollbarsSheet;
nsCOMPtr<nsICSSStyleSheet> mFormsSheet;
nsCOMPtr<nsICSSStyleSheet> mUserContentSheet;