Prevent mistaken overwriting of browser.newtab.url when using the browser preferences dialog

master
Fedor 2019-05-20 09:01:38 +03:00
parent 6be95e865d
commit 3cdad969b3
2 changed files with 39 additions and 26 deletions

View File

@ -22,7 +22,11 @@ var gNewtabUrl = {
return;
}
} else {
newtabUrlChoice = Services.prefs.getIntPref("browser.newtab.choice");
if (this.newtabUrlChoiceIsSet) {
newtabUrlChoice = Services.prefs.getIntPref("browser.newtab.choice");
} else {
newtabUrlChoice = this.getNewtabChoice();
}
}
if (browserHomepageUrl || browserHomepageUrl == "") {
if (Services.prefs.getBoolPref("browser.preferences.instantApply")) {
@ -64,5 +68,35 @@ var gNewtabUrl = {
}
Services.prefs.setCharPref("browser.newtab.url",newtabUrlPref);
} catch(e) { console.error(e); }
},
/**
* Determines the value of browser.newtab.choice based
* on the value of browser.newtab.url
*
* @returns the value of browser.newtab.choice
*/
getNewtabChoice: function() {
let newtabUrlPref = Services.prefs.getCharPref("browser.newtab.url");
let browserHomepageUrl = Services.prefs.getComplexValue("browser.startup.homepage",
Components.interfaces.nsIPrefLocalizedString).data;
let newtabUrlSanitizedPref = browserHomepageUrl.split("|")[0];
let defaultStartupHomepage = Services.prefs.getDefaultBranch("browser.")
.getComplexValue("startup.homepage",
Components.interfaces.nsIPrefLocalizedString).data;
switch (newtabUrlPref) {
case "about:logopage":
return 1;
case defaultStartupHomepage:
return 2;
case newtabUrlSanitizedPref:
return 3;
case "about:newtab":
return 4;
default: // Custom URL entered.
// We need this to consider instantApply.
this.newtabPageCustom = newtabUrlPref;
return 0;
}
}
};

View File

@ -78,34 +78,13 @@ var gTabsPane = {
/**
* Determines the value of the New Tab display drop-down based
* on the value of browser.newtab.url.
*
* @returns the appropriate value of browser.newtab.choice
*/
readNewtabUrl: function() {
let newtabUrlPref = document.getElementById("browser.newtab.url");
let newtabUrlSanitizedPref = document.getElementById("browser.newtab.myhome");
let newtabUrlChoice = document.getElementById("browser.newtab.choice");
let defaultStartupHomepage = Services.prefs.getDefaultBranch("browser.")
.getComplexValue("startup.homepage",
Components.interfaces.nsIPrefLocalizedString).data;
switch (newtabUrlPref.value) {
case "about:logopage":
newtabUrlChoice.value = 1;
break;
case defaultStartupHomepage:
newtabUrlChoice.value = 2;
break;
case newtabUrlSanitizedPref.value:
newtabUrlChoice.value = 3;
break;
case "about:newtab":
newtabUrlChoice.value = 4;
break;
default: // Custom URL entered.
document.getElementById("newtabPageCustom").hidden = false;
newtabUrlChoice.value = 0;
// We need this to consider instantApply.
this.newtabPageCustom = newtabUrlPref.value;
newtabUrlChoice.value = gNewtabUrl.getNewtabChoice();
if (newtabUrlChoice.value == 0) {
document.getElementById("newtabPageCustom").hidden = false;
}
gNewtabUrl.newtabUrlChoiceIsSet = true;
}
};