nsLayoutStylesheetCache::nsLayoutStylesheetCache() { nsCOMPtr<nsIObserverService> obsSvc = do_GetService("@mozilla.org/observer-service;1"); NS_ASSERTION(obsSvc, "No global observer service?"); if (obsSvc) { obsSvc->AddObserver(this, "profile-before-change", PR_FALSE); obsSvc->AddObserver(this, "profile-do-change", PR_FALSE); obsSvc->AddObserver(this, "chrome-flush-skin-caches", PR_FALSE); obsSvc->AddObserver(this, "chrome-flush-caches", PR_FALSE); } InitFromProfile(); }
nsresult nsLayoutStylesheetCache::Observe(nsISupports* aSubject, const char* aTopic, const PRUnichar* aData) { if (!strcmp(aTopic, "profile-before-change")) { mUserContentSheet = nullptr; mUserChromeSheet = nullptr; } else if (!strcmp(aTopic, "profile-do-change")) { InitFromProfile(); } else if (strcmp(aTopic, "chrome-flush-skin-caches") == 0 || strcmp(aTopic, "chrome-flush-caches") == 0) { mScrollbarsSheet = nullptr; mFormsSheet = nullptr; } else { NS_NOTREACHED("Unexpected observer topic."); } return NS_OK; }
nsLayoutStylesheetCache::nsLayoutStylesheetCache() { nsCOMPtr<nsIObserverService> obsSvc = mozilla::services::GetObserverService(); NS_ASSERTION(obsSvc, "No global observer service?"); if (obsSvc) { obsSvc->AddObserver(this, "profile-before-change", false); obsSvc->AddObserver(this, "profile-do-change", false); obsSvc->AddObserver(this, "chrome-flush-skin-caches", false); obsSvc->AddObserver(this, "chrome-flush-caches", false); } InitFromProfile(); // And make sure that we load our UA sheets. No need to do this // per-profile, since they're profile-invariant. nsCOMPtr<nsIURI> uri; NS_NewURI(getter_AddRefs(uri), "resource://gre-resources/ua.css"); if (uri) { LoadSheet(uri, mUASheet, true); } NS_ASSERTION(mUASheet, "Could not load ua.css"); NS_NewURI(getter_AddRefs(uri), "resource://gre-resources/quirk.css"); if (uri) { LoadSheet(uri, mQuirkSheet, true); } NS_ASSERTION(mQuirkSheet, "Could not load quirk.css"); NS_NewURI(getter_AddRefs(uri), "resource://gre-resources/full-screen-override.css"); if (uri) { LoadSheet(uri, mFullScreenOverrideSheet, true); } NS_ASSERTION(mFullScreenOverrideSheet, "Could not load full-screen-override.css"); mReporter = new LayoutStyleSheetCacheReporter(); NS_RegisterMemoryReporter(mReporter); }