Bug 1367696 - PART II add xpcshell structure for onboarding;r=mossop,rexboy

MozReview-Commit-ID: LA3LD8qx35d

--HG--
extra : rebase_source : 1209f33970ffcbd02ccdf8338e61c4c4bb64b22c
This commit is contained in:
gasolin 2017-06-22 16:25:53 +08:00
parent 5c929621d2
commit d9dc7d2e7b
5 changed files with 65 additions and 0 deletions

View File

@ -19,4 +19,6 @@ FINAL_TARGET_FILES.features['onboarding@mozilla.org'] += [
BROWSER_CHROME_MANIFESTS += ['test/browser/browser.ini']
XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini']
JAR_MANIFESTS += ['jar.mn']

View File

@ -0,0 +1,7 @@
"use strict";
module.exports = {
"extends": [
"plugin:mozilla/xpcshell-test",
],
};

View File

@ -0,0 +1,38 @@
/**
* Provides infrastructure for automated onboarding components tests.
*/
"use strict";
/* global Cc, Ci, Cu */
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
Cu.import("resource://gre/modules/Preferences.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
// Load our bootstrap extension manifest so we can access our chrome/resource URIs.
// Cargo culted from formautofill system add-on
const EXTENSION_ID = "onboarding@mozilla.org";
let extensionDir = Services.dirsvc.get("GreD", Ci.nsIFile);
extensionDir.append("browser");
extensionDir.append("features");
extensionDir.append(EXTENSION_ID);
// If the unpacked extension doesn't exist, use the packed version.
if (!extensionDir.exists()) {
extensionDir.leafName += ".xpi";
}
Components.manager.addBootstrappedManifestLocation(extensionDir);
const TOURSET_VERSION = 1;
const PREF_TOUR_TYPE = "browser.onboarding.tour-type";
const PREF_TOURSET_VERSION = "browser.onboarding.tourset-version";
const PREF_SEEN_TOURSET_VERSION = "browser.onboarding.seen-tourset-version";
const PREF_ONBOARDING_HIDDEN = "browser.onboarding.hidden";
function resetOnboardingDefaultState() {
// All the prefs should be reset to what prefs should looks like in a new user profile
Services.prefs.setBoolPref(PREF_ONBOARDING_HIDDEN, false);
Services.prefs.setIntPref(PREF_TOURSET_VERSION, TOURSET_VERSION);
Services.prefs.clearUserPref(PREF_SEEN_TOURSET_VERSION);
Services.prefs.clearUserPref(PREF_TOUR_TYPE);
}

View File

@ -0,0 +1,13 @@
/*
* Test for onboarding tour type check.
*/
"use strict";
add_task(async function() {
do_print("Starting testcase: New user state");
resetOnboardingDefaultState();
do_check_eq(Preferences.get(PREF_TOURSET_VERSION), TOURSET_VERSION);
do_check_eq(Preferences.get(PREF_ONBOARDING_HIDDEN), false);
});

View File

@ -0,0 +1,5 @@
[DEFAULT]
firefox-appdir = browser
head = head.js
[test-onboarding-tour-type.js]