/* static */ void nsDOMCSSDeclaration::GetCSSParsingEnvironmentForRule(css::Rule* aRule, CSSParsingEnvironment& aCSSParseEnv) { CSSStyleSheet* sheet = aRule ? aRule->GetStyleSheet() : nullptr; if (!sheet) { aCSSParseEnv.mPrincipal = nullptr; return; } nsIDocument* document = sheet->GetOwningDocument(); aCSSParseEnv.mSheetURI = sheet->GetSheetURI(); aCSSParseEnv.mBaseURI = sheet->GetBaseURI(); aCSSParseEnv.mPrincipal = sheet->Principal(); aCSSParseEnv.mCSSLoader = document ? document->CSSLoader() : nullptr; }
nsresult nsXBLPrototypeResources::FlushSkinSheets() { if (mStyleSheetList.Length() == 0) return NS_OK; nsCOMPtr<nsIDocument> doc = mLoader->mBinding->XBLDocumentInfo()->GetDocument(); // If doc is null, we're in the process of tearing things down, so just // return without rebuilding anything. if (!doc) { return NS_OK; } // 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. nsTArray<nsRefPtr<CSSStyleSheet>> oldSheets; oldSheets.SwapElements(mStyleSheetList); mozilla::css::Loader* cssLoader = doc->CSSLoader(); for (size_t i = 0, count = oldSheets.Length(); i < count; ++i) { CSSStyleSheet* oldSheet = oldSheets[i]; nsIURI* uri = oldSheet->GetSheetURI(); nsRefPtr<CSSStyleSheet> newSheet; if (IsChromeURI(uri)) { if (NS_FAILED(cssLoader->LoadSheetSync(uri, getter_AddRefs(newSheet)))) continue; } else { newSheet = oldSheet; } mStyleSheetList.AppendElement(newSheet); } GatherRuleProcessor(); return NS_OK; }