summaryrefslogtreecommitdiffstats
path: root/application/palemoon/components/preferences/newtaburl.js
diff options
context:
space:
mode:
authorJustOff <Off.Just.Off@gmail.com>2018-09-03 21:15:53 +0300
committerJustOff <Off.Just.Off@gmail.com>2018-09-03 21:15:53 +0300
commit5359706e7ab5d164748786aa2fd040eca52ed5f3 (patch)
treeb4d10934ba7b03c12d1b8dcbf44125e56d9a5ff5 /application/palemoon/components/preferences/newtaburl.js
parent2e00eb87ef299e6eb7521670e6a6720fee19f5fc (diff)
downloadUXP-5359706e7ab5d164748786aa2fd040eca52ed5f3.tar
UXP-5359706e7ab5d164748786aa2fd040eca52ed5f3.tar.gz
UXP-5359706e7ab5d164748786aa2fd040eca52ed5f3.tar.lz
UXP-5359706e7ab5d164748786aa2fd040eca52ed5f3.tar.xz
UXP-5359706e7ab5d164748786aa2fd040eca52ed5f3.zip
Update 'browser.newtab.url' when it's used for new tabs and 'browser.startup.homepage' changes
Diffstat (limited to 'application/palemoon/components/preferences/newtaburl.js')
-rw-r--r--application/palemoon/components/preferences/newtaburl.js66
1 files changed, 66 insertions, 0 deletions
diff --git a/application/palemoon/components/preferences/newtaburl.js b/application/palemoon/components/preferences/newtaburl.js
new file mode 100644
index 000000000..afe0b43fb
--- /dev/null
+++ b/application/palemoon/components/preferences/newtaburl.js
@@ -0,0 +1,66 @@
+/* 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/. */
+
+var gNewtabUrl = {
+ /**
+ * Writes browser.newtab.url with the appropriate value.
+ * If the choice is "my home page", get and sanitize
+ * the browser home page URL to make it suitable for newtab use.
+ *
+ * Called from prefwindow ondialogaccept in preferences.xul,
+ * newtabPage oncommand in tabs.xul, browserHomePage oninput,
+ * useCurrent, useBookmark and restoreDefaultHomePage oncommand
+ * in main.xul to consider instantApply.
+ */
+ writeNewtabUrl: function(newtabUrlChoice, browserHomepageUrl) {
+ try {
+ if (newtabUrlChoice) {
+ if (Services.prefs.getBoolPref("browser.preferences.instantApply")) {
+ newtabUrlChoice = parseInt(newtabUrlChoice);
+ } else {
+ return;
+ }
+ } else {
+ newtabUrlChoice = Services.prefs.getIntPref("browser.newtab.choice");
+ }
+ if (browserHomepageUrl || browserHomepageUrl == "") {
+ if (Services.prefs.getBoolPref("browser.preferences.instantApply")) {
+ if (browserHomepageUrl == "") {
+ browserHomepageUrl = "about:home";
+ }
+ } else {
+ return;
+ }
+ } else {
+ browserHomepageUrl = Services.prefs.getComplexValue("browser.startup.homepage",
+ Components.interfaces.nsIPrefLocalizedString).data;
+ }
+ let newtabUrlPref = Services.prefs.getCharPref("browser.newtab.url");
+ switch (newtabUrlChoice) {
+ case 1:
+ newtabUrlPref = "about:logopage";
+ break;
+ case 2:
+ newtabUrlPref = "http://start.palemoon.org/";
+ break;
+ case 3:
+ // If url is a pipe-delimited set of pages, just take the first one.
+ let newtabUrlSanitizedPref=browserHomepageUrl.split("|")[0];
+ // XXX: do we need extra sanitation here, e.g. for invalid URLs?
+ Services.prefs.setCharPref("browser.newtab.myhome", newtabUrlSanitizedPref);
+ newtabUrlPref = newtabUrlSanitizedPref;
+ break;
+ case 4:
+ newtabUrlPref = "about:newtab";
+ break;
+ default:
+ // In case of any other value it's a custom URL, consider instantApply.
+ if (this.newtabPageCustom) {
+ newtabUrlPref = this.newtabPageCustom;
+ }
+ }
+ Services.prefs.setCharPref("browser.newtab.url",newtabUrlPref);
+ } catch(e) { console.error(e); }
+ }
+};