mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-26 12:20:56 +00:00
Bug 1540170 - release assert if something tries to start the history service before profile startup, r=mak
Differential Revision: https://phabricator.services.mozilla.com/D24910 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
13ff7ba935
commit
8833331cd2
@ -1,8 +1,24 @@
|
||||
// We load HTML documents, which try to track link state, which requires
|
||||
// the history service, which requires a profile.
|
||||
do_get_profile();
|
||||
|
||||
function run_test() {
|
||||
// vectors by the html5security project (https://code.google.com/p/html5security/ & Creative Commons 3.0 BY), see CC-BY-LICENSE for the full license
|
||||
load("results.js"); // gives us a `vectors' array
|
||||
/* import-globals-from ./results.js */
|
||||
|
||||
// xpcshell tests are weird. They fake shutdown after the test finishes. This upsets this test
|
||||
// because it will try to create the history service to check for visited state on the links
|
||||
// we're parsing.
|
||||
// Creating the history service midway through shutdown breaks.
|
||||
// We can't catch this in the history component because we're not *actually* shutting down,
|
||||
// and so the app startup's service's `shuttingDown` bool is false, even though normally that
|
||||
// is set to true *before* profile-change-teardown notifications are fired.
|
||||
// To work around this, just force the history service to be created earlier:
|
||||
|
||||
let {PlacesUtils} = ChromeUtils.import("resource://gre/modules/PlacesUtils.jsm");
|
||||
Assert.ok(PlacesUtils.history.databaseStatus <= 1, "ensure places database is successfully initialized.");
|
||||
|
||||
var ParserUtils = Cc["@mozilla.org/parserutils;1"].getService(Ci.nsIParserUtils);
|
||||
var sanitizeFlags = ParserUtils.SanitizerCidEmbedsOnly | ParserUtils.SanitizerDropForms | ParserUtils.SanitizerDropNonCSSPresentation;
|
||||
// flags according to
|
||||
|
@ -1445,6 +1445,16 @@ History::History()
|
||||
mObservers(VISIT_OBSERVERS_INITIAL_CACHE_LENGTH),
|
||||
mRecentlyVisitedURIs(RECENTLY_VISITED_URIS_SIZE) {
|
||||
NS_ASSERTION(!gService, "Ruh-roh! This service has already been created!");
|
||||
if (XRE_IsParentProcess()) {
|
||||
nsCOMPtr<nsIProperties> dirsvc = services::GetDirectoryService();
|
||||
bool haveProfile = false;
|
||||
MOZ_RELEASE_ASSERT(
|
||||
dirsvc &&
|
||||
NS_SUCCEEDED(
|
||||
dirsvc->Has(NS_APP_USER_PROFILE_50_DIR, &haveProfile)) &&
|
||||
haveProfile,
|
||||
"Can't construct history service if there is no profile.");
|
||||
}
|
||||
gService = this;
|
||||
|
||||
nsCOMPtr<nsIObserverService> os = services::GetObserverService();
|
||||
|
Loading…
x
Reference in New Issue
Block a user