fune/browser/modules/HomePage.jsm
Victor Porof af7d1d3b67 Bug 1561435 - Format browser/modules/, a=automatic-formatting
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D36046

--HG--
extra : source : f3c632037a1064c41b1f8b02f477c854b2fb4362
2019-07-05 09:55:19 +02:00

102 lines
2.7 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
/* globals ChromeUtils, Services */
/* exported HomePage */
"use strict";
var EXPORTED_SYMBOLS = ["HomePage"];
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.defineModuleGetter(
this,
"PrivateBrowsingUtils",
"resource://gre/modules/PrivateBrowsingUtils.jsm"
);
const kPrefName = "browser.startup.homepage";
function getHomepagePref(useDefault) {
let homePage;
let prefs = Services.prefs;
if (useDefault) {
prefs = prefs.getDefaultBranch(null);
}
try {
// Historically, this was a localizable pref, but default Firefox builds
// don't use this.
// Distributions and local customizations might still use this, so let's
// keep it.
homePage = prefs.getComplexValue(kPrefName, Ci.nsIPrefLocalizedString).data;
} catch (ex) {}
if (!homePage) {
homePage = prefs.getStringPref(kPrefName);
}
// Apparently at some point users ended up with blank home pages somehow.
// If that happens, reset the pref and read it again.
if (!homePage && !useDefault) {
Services.prefs.clearUserPref(kPrefName);
homePage = getHomepagePref(true);
}
return homePage;
}
let HomePage = {
get(aWindow) {
let homePages = getHomepagePref();
if (
PrivateBrowsingUtils.permanentPrivateBrowsing ||
(aWindow && PrivateBrowsingUtils.isWindowPrivate(aWindow))
) {
// If an extension controls the setting and does not have private
// browsing permission, use the default setting.
let extensionControlled = Services.prefs.getBoolPref(
"browser.startup.homepage_override.extensionControlled",
false
);
let privateAllowed = Services.prefs.getBoolPref(
"browser.startup.homepage_override.privateAllowed",
false
);
// There is a potential on upgrade that the prefs are not set yet, so we double check
// for moz-extension.
if (
!privateAllowed &&
(extensionControlled || homePages.includes("moz-extension://"))
) {
return this.getDefault();
}
}
return homePages;
},
getDefault() {
return getHomepagePref(true);
},
get overridden() {
return Services.prefs.prefHasUserValue(kPrefName);
},
get locked() {
return Services.prefs.prefIsLocked(kPrefName);
},
get isDefault() {
return HomePage.get() === HomePage.getDefault();
},
set(value) {
Services.prefs.setStringPref(kPrefName, value);
},
reset() {
Services.prefs.clearUserPref(kPrefName);
},
};