nsresult nsXBLPrototypeResources::FlushSkinSheets() { if (mStyleSheetList.Count() == 0) return NS_OK; nsresult rv; // XXXbz should be getting loader off the document or something nsCOMPtr<nsICSSLoader> loader = do_CreateInstance(kCSSLoaderCID, &rv); if (NS_FAILED(rv)) return rv; // We have scoped stylesheets. Reload any chrome stylesheets we // encounter. (If they aren't skin sheets, it doesn't matter, since // they'll still be in the chrome cache. mRuleProcessor = nsnull; nsCOMArray<nsICSSStyleSheet> oldSheets(mStyleSheetList); mStyleSheetList.Clear(); PRInt32 i; PRInt32 count = oldSheets.Count(); for (i = 0; i < count; i++) { nsICSSStyleSheet* oldSheet = oldSheets[i]; nsCOMPtr<nsIURI> uri; oldSheet->GetSheetURI(getter_AddRefs(uri)); nsCOMPtr<nsICSSStyleSheet> newSheet; if (IsChromeURI(uri)) { if (NS_FAILED(loader->LoadSheetSync(uri, getter_AddRefs(newSheet)))) continue; } else { newSheet = oldSheet; } mStyleSheetList.AppendObject(newSheet); } mRuleProcessor = new nsCSSRuleProcessor(mStyleSheetList); return NS_OK; }
nsresult nsXBLPrototypeResources::FlushSkinSheets() { if (mStyleSheetList.Length() == 0) return NS_OK; nsCOMPtr<nsIDocument> doc = mLoader->mBinding->XBLDocumentInfo()->GetDocument(); mozilla::css::Loader* cssLoader = doc->CSSLoader(); // We have scoped stylesheets. Reload any chrome stylesheets we // encounter. (If they aren't skin sheets, it doesn't matter, since // they'll still be in the chrome cache. mRuleProcessor = nsnull; sheet_array_type oldSheets(mStyleSheetList); mStyleSheetList.Clear(); for (sheet_array_type::size_type i = 0, count = oldSheets.Length(); i < count; ++i) { nsCSSStyleSheet* oldSheet = oldSheets[i]; nsIURI* uri = oldSheet->GetSheetURI(); nsRefPtr<nsCSSStyleSheet> newSheet; if (IsChromeURI(uri)) { if (NS_FAILED(cssLoader->LoadSheetSync(uri, getter_AddRefs(newSheet)))) continue; } else { newSheet = oldSheet; } mStyleSheetList.AppendElement(newSheet); } mRuleProcessor = new nsCSSRuleProcessor(mStyleSheetList, nsStyleSet::eDocSheet); return NS_OK; }