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); do_CreateInstance(kCSSLoaderCID);
if (!cssLoader) if (!cssLoader)
return NS_OK; return NS_OK;
cssLoader->SetCaseSensitive(PR_TRUE);
nsCOMPtr<nsIWindowMediator> windowMediator nsCOMPtr<nsIWindowMediator> windowMediator
(do_GetService(NS_WINDOWMEDIATOR_CONTRACTID)); (do_GetService(NS_WINDOWMEDIATOR_CONTRACTID));

View File

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

View File

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