gecko/browser/base/content/test/tabview/browser_tabview_bug656778.js

158 lines
4.6 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
function test() {
waitForExplicitFinish();
registerCleanupFunction(function () {
Services.prefs.clearUserPref(TabView.PREF_FIRST_RUN);
Services.prefs.clearUserPref(TabView.PREF_STARTUP_PAGE);
Services.prefs.clearUserPref(TabView.PREF_RESTORE_ENABLED_ONCE);
});
let assertBoolPref = function (pref, value) {
is(Services.prefs.getBoolPref(pref), value, pref + " is " + value);
};
let assertIntPref = function (pref, value) {
is(Services.prefs.getIntPref(pref), value, pref + " is " + value);
};
let setPreferences = function (startupPage, firstRun, enabledOnce) {
Services.prefs.setIntPref(TabView.PREF_STARTUP_PAGE, startupPage);
Services.prefs.setBoolPref(TabView.PREF_FIRST_RUN, firstRun);
Services.prefs.setBoolPref(TabView.PREF_RESTORE_ENABLED_ONCE, enabledOnce);
};
let assertPreferences = function (startupPage, firstRun, enabledOnce) {
assertIntPref(TabView.PREF_STARTUP_PAGE, startupPage);
assertBoolPref(TabView.PREF_FIRST_RUN, firstRun);
assertBoolPref(TabView.PREF_RESTORE_ENABLED_ONCE, enabledOnce);
};
let assertNotificationBannerVisible = function (win) {
let cw = win.TabView.getContentWindow();
is(cw.iQ(".banner").length, 1, "notification banner is visible");
};
let assertNotificationBannerNotVisible = function (win) {
let cw = win.TabView.getContentWindow();
is(cw.iQ(".banner").length, 0, "notification banner is not visible");
};
let next = function () {
if (tests.length == 0) {
waitForFocus(finish);
return;
}
let test = tests.shift();
info("running " + test.name + "...");
test();
};
// State:
// Panorama was already used before (firstUseExperienced = true) but session
// restore is deactivated. We did not automatically enable SR, yet.
//
// Expected result:
// When entering Panorma session restore will be enabled and a notification
// banner is shown.
let test1 = function test1() {
setPreferences(1, true, false);
newWindowWithTabView(function (win) {
assertNotificationBannerVisible(win);
assertPreferences(3, true, true);
win.close();
next();
});
};
// State:
// Panorama has not been used before (firstUseExperienced = false) and session
// restore is deactivated. We did not automatically enable SR, yet. That state
// is equal to starting the browser the first time.
//
// Expected result:
// When entering Panorma nothing happens. When we detect that Panorama is
// really used (firstUseExperienced = true) we notify that session restore
// is now enabled.
let test2 = function test2() {
setPreferences(1, false, false);
newWindowWithTabView(function (win) {
assertNotificationBannerNotVisible(win);
assertPreferences(1, false, false);
win.TabView.firstUseExperienced = true;
assertNotificationBannerVisible(win);
assertPreferences(3, true, true);
win.close();
next();
});
};
// State:
// Panorama was already used before (firstUseExperienced = true) and session
// restore is activated. We did not automatically enable SR, yet.
//
// Expected result:
// When entering Panorama nothing happens because session store is already
// enabled so there's no reason to notify.
let test3 = function test3() {
setPreferences(3, true, false);
newWindowWithTabView(function (win) {
assertNotificationBannerNotVisible(win);
assertPreferences(3, true, true);
win.close();
next();
});
};
// State:
// Panorama was already used before (firstUseExperienced = true) and session
// restore has been automatically activated.
//
// Expected result:
// When entering Panorama nothing happens.
let test4 = function test4() {
setPreferences(3, true, true);
newWindowWithTabView(function (win) {
assertNotificationBannerNotVisible(win);
assertPreferences(3, true, true);
win.close();
next();
});
};
// State:
// Panorama was already used before (firstUseExperienced = true) and session
// restore has been automatically activated. Session store was afterwards
// disabled by the user so we won't touch that again.
//
// Expected result:
// When entering Panorama nothing happens and we didn't enable session restore.
let test5 = function test5() {
setPreferences(1, true, true);
newWindowWithTabView(function (win) {
assertNotificationBannerNotVisible(win);
assertPreferences(1, true, true);
win.close();
next();
});
};
let tests = [test1, test2, test3, test4, test5];
next();
}