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;
}