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:
@@ -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;
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user