Bug 331883. Restrict anonymous box selectors to UA stylesheets. r+sr=dbaron,bzbarsky,a=dbaron

git-svn-id: svn://10.0.0.236/branches/MOZILLA_1_8_BRANCH@200248 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
roc+%cs.cmu.edu
2006-06-18 22:46:41 +00:00
parent 1d76548c60
commit 887b8bdb94
13 changed files with 138 additions and 33 deletions

View File

@@ -86,8 +86,9 @@ nsLayoutStylesheetCache::ScrollbarsSheet()
NS_LITERAL_CSTRING("chrome://global/skin/xulscrollbars.css"));
#endif
// Scrollbars don't need access to unsafe rules
if (sheetURI)
LoadSheet(sheetURI, gStyleCache->mScrollbarsSheet);
LoadSheet(sheetURI, gStyleCache->mScrollbarsSheet, PR_FALSE);
#ifdef XP_MACOSX
NS_ASSERTION(gStyleCache->mScrollbarsSheet, "Could not load nativescrollbars.css.");
#else
@@ -110,8 +111,9 @@ nsLayoutStylesheetCache::FormsSheet()
NS_NewURI(getter_AddRefs(sheetURI),
NS_LITERAL_CSTRING("resource://gre/res/forms.css"));
// forms.css needs access to unsafe rules
if (sheetURI)
LoadSheet(sheetURI, gStyleCache->mFormsSheet);
LoadSheet(sheetURI, gStyleCache->mFormsSheet, PR_TRUE);
NS_ASSERTION(gStyleCache->mFormsSheet, "Could not load forms.css.");
}
@@ -211,13 +213,14 @@ nsLayoutStylesheetCache::LoadSheetFile(nsIFile* aFile, nsCOMPtr<nsICSSStyleSheet
nsCOMPtr<nsIURI> uri;
NS_NewFileURI(getter_AddRefs(uri), aFile);
LoadSheet(uri, aSheet);
LoadSheet(uri, aSheet, PR_FALSE);
}
static NS_DEFINE_CID(kCSSLoaderCID, NS_CSS_LOADER_CID);
void
nsLayoutStylesheetCache::LoadSheet(nsIURI* aURI, nsCOMPtr<nsICSSStyleSheet> &aSheet)
nsLayoutStylesheetCache::LoadSheet(nsIURI* aURI, nsCOMPtr<nsICSSStyleSheet> &aSheet,
PRBool aEnableUnsafeRules)
{
if (!aURI) {
NS_ERROR("Null URI. Out of memory?");
@@ -226,10 +229,10 @@ nsLayoutStylesheetCache::LoadSheet(nsIURI* aURI, nsCOMPtr<nsICSSStyleSheet> &aSh
// note: CSS Loader is treated as a service here... slightly unusual,
// but within the rules.
nsCOMPtr<nsICSSLoader> cssLoader = do_GetService(kCSSLoaderCID);
nsCOMPtr<nsICSSLoader_MOZILLA_1_8_BRANCH> cssLoader = do_GetService(kCSSLoaderCID);
if (!cssLoader) return;
cssLoader->LoadAgentSheet(aURI, getter_AddRefs(aSheet));
cssLoader->LoadSheetSync(aURI, aEnableUnsafeRules, getter_AddRefs(aSheet));
}
nsLayoutStylesheetCache*