Bug 1537736 - Use HomePage.get()/set() more consistently r=nanj

MozReview-Commit-ID: 5PzW6ONmuKd

Differential Revision: https://phabricator.services.mozilla.com/D28505
This commit is contained in:
Ricky Rosario
2019-04-23 18:30:07 +00:00
parent 586807cf21
commit ff586fa56a
5 changed files with 45 additions and 40 deletions

View File

@@ -36,6 +36,7 @@ var gHomePane = {
HOME_MODE_FIREFOX_HOME: "0",
HOME_MODE_BLANK: "1",
HOME_MODE_CUSTOM: "2",
HOMEPAGE_PREF: "browser.startup.homepage",
NEWTAB_ENABLED_PREF: "browser.newtabpage.enabled",
ACTIVITY_STREAM_PREF_BRANCH: "browser.newtabpage.activity-stream.",
@@ -89,12 +90,12 @@ var gHomePane = {
watchHomeTabPrefChange() {
const observer = () => this.toggleRestoreDefaultsBtn();
Services.prefs.addObserver(this.ACTIVITY_STREAM_PREF_BRANCH, observer);
Services.prefs.addObserver("browser.startup.homepage", observer);
Services.prefs.addObserver(this.HOMEPAGE_PREF, observer);
Services.prefs.addObserver(this.NEWTAB_ENABLED_PREF, observer);
window.addEventListener("unload", () => {
Services.prefs.removeObserver(this.ACTIVITY_STREAM_PREF_BRANCH, observer);
Services.prefs.removeObserver("browser.startup.homepage", observer);
Services.prefs.removeObserver(this.HOMEPAGE_PREF, observer);
Services.prefs.removeObserver(this.NEWTAB_ENABLED_PREF, observer);
});
},
@@ -110,7 +111,7 @@ var gHomePane = {
let {shouldShow, isControlled} = options;
const customSettingsContainerEl = document.getElementById("customSettings");
const customUrlEl = document.getElementById("homePageUrl");
const homePref = Preferences.get("browser.startup.homepage");
const homePage = HomePage.get();
const isHomePageCustom = isControlled || (!this._isHomePageDefaultValue() && !this.isHomePageBlank());
if (typeof shouldShow === "undefined") {
@@ -120,11 +121,13 @@ var gHomePane = {
// We can't use isHomePageDefaultValue and isHomePageBlank here because we want to disregard the blank
// possibility triggered by the browser.startup.page being 0.
// We also skip when HomePage is locked because it might be locked to a default that isn't "about:home"
// (and it makes existing tests happy).
let newValue;
if (homePref.value !== homePref.defaultValue && homePref.value !== "about:blank") {
newValue = homePref.value;
} else {
if (homePage === "about:blank" || (HomePage.isDefault && !HomePage.locked)) {
newValue = "";
} else {
newValue = homePage;
}
if (customUrlEl.value !== newValue) {
customUrlEl.value = newValue;
@@ -133,13 +136,11 @@ var gHomePane = {
/**
* _isHomePageDefaultValue
* @param {bool} isControlled Is an extension controlling the home page?
* @returns {bool} Is the homepage set to the default pref value?
*/
_isHomePageDefaultValue() {
const startupPref = Preferences.get("browser.startup.page");
const homePref = Preferences.get("browser.startup.homepage");
return startupPref.value !== gMainPane.STARTUP_PREF_BLANK && homePref.value === homePref.defaultValue;
return startupPref.value !== gMainPane.STARTUP_PREF_BLANK && HomePage.isDefault;
},
/**
@@ -148,8 +149,7 @@ var gHomePane = {
*/
isHomePageBlank() {
const startupPref = Preferences.get("browser.startup.page");
const homePref = Preferences.get("browser.startup.homepage");
return homePref.value === "about:blank" || homePref.value === "" || startupPref.value === gMainPane.STARTUP_PREF_BLANK;
return ["about:blank", ""].includes(HomePage.get()) || startupPref.value === gMainPane.STARTUP_PREF_BLANK;
},
/**
* isHomePageControlled
@@ -157,8 +157,7 @@ var gHomePane = {
* @returns {Promise}
*/
isHomePageControlled() {
const homePref = Preferences.get("browser.startup.homepage");
if (homePref.locked) {
if (HomePage.locked) {
return Promise.resolve(false);
}
return handleControllingExtension(PREF_SETTING_TYPE, HOMEPAGE_OVERRIDE_KEY);
@@ -223,7 +222,12 @@ var gHomePane = {
if (!pref) {
throw new Error(`Element with id ${element.id} did not have preference or data-preference-related attribute defined.`);
}
isDisabled = Preferences.get(pref).locked || isControlled;
if (pref === this.HOMEPAGE_PREF) {
isDisabled = HomePage.locked || isControlled;
} else {
isDisabled = Preferences.get(pref).locked || isControlled;
}
if (pref === "pref.browser.disable_button.current_page") {
// Special case for current_page to disable it if tabCount is 0
@@ -235,8 +239,7 @@ var gHomePane = {
},
async _handleHomePageOverrides() {
const homePref = Preferences.get("browser.startup.homepage");
if (homePref.locked) {
if (HomePage.locked) {
// An extension can't control these settings if they're locked.
hideControllingExtension(HOMEPAGE_OVERRIDE_KEY);
this._setInputDisabledStates(false);
@@ -267,22 +270,21 @@ var gHomePane = {
onMenuChange(event) {
const {value} = event.target;
const startupPref = Preferences.get("browser.startup.page");
const homePref = Preferences.get("browser.startup.homepage");
switch (value) {
case this.HOME_MODE_FIREFOX_HOME:
if (startupPref.value === gMainPane.STARTUP_PREF_BLANK) {
startupPref.value = gMainPane.STARTUP_PREF_HOMEPAGE;
}
if (homePref.value !== homePref.defaultValue) {
Services.prefs.clearUserPref(homePref.id);
if (!HomePage.isDefault) {
HomePage.reset();
} else {
this._renderCustomSettings({shouldShow: false});
}
break;
case this.HOME_MODE_BLANK:
if (homePref.value !== "about:blank") {
homePref.value = "about:blank";
if (HomePage.get() !== "about:blank") {
HomePage.set("about:blank");
} else {
this._renderCustomSettings({shouldShow: false});
}
@@ -325,7 +327,6 @@ var gHomePane = {
* updating about:preferences#home UI to reflect this.
*/
setHomePageToCurrent() {
let homePage = Preferences.get("browser.startup.homepage");
let tabs = this._getTabsForHomePage();
function getTabURI(t) {
return t.linkedBrowser.currentURI.spec;
@@ -333,7 +334,7 @@ var gHomePane = {
// FIXME Bug 244192: using dangerous "|" joiner!
if (tabs.length) {
homePage.value = tabs.map(getTabURI).join("|");
HomePage.set(tabs.map(getTabURI).join("|"));
}
Services.telemetry.scalarAdd("preferences.use_current_page", 1);
@@ -343,10 +344,8 @@ var gHomePane = {
if (aEvent.detail.button != "accept")
return;
if (rv.urls && rv.names) {
let homePage = Preferences.get("browser.startup.homepage");
// XXX still using dangerous "|" joiner!
homePage.value = rv.urls.join("|");
HomePage.set(rv.urls.join("|"));
}
},
@@ -364,7 +363,7 @@ var gHomePane = {
},
restoreDefaultHomePage() {
Services.prefs.clearUserPref("browser.startup.homepage");
HomePage.reset();
Services.prefs.clearUserPref(this.NEWTAB_ENABLED_PREF);
},
@@ -385,9 +384,8 @@ var gHomePane = {
},
onCustomHomePageChange(event) {
const homePref = Preferences.get("browser.startup.homepage");
const value = event.target.value || homePref.defaultValue;
homePref.value = value;
const value = event.target.value || HomePage.getDefault();
HomePage.set(value);
},
/**
@@ -396,10 +394,9 @@ var gHomePane = {
_changedHomeTabDefaultPrefs() {
// If Discovery Stream is enabled Firefox Home Content preference options are hidden
const homeContentChanged = !this.isPocketNewtabEnabled && this.homePanePrefs.some(pref => pref.hasUserValue);
const homePref = Preferences.get("browser.startup.homepage");
const newtabPref = Preferences.get(this.NEWTAB_ENABLED_PREF);
return homeContentChanged || homePref.hasUserValue || newtabPref.hasUserValue;
return homeContentChanged || HomePage.overridden || newtabPref.hasUserValue;
},
/**