summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--application/palemoon/components/preferences/jar.mn1
-rw-r--r--application/palemoon/components/preferences/main.xul7
-rw-r--r--application/palemoon/components/preferences/newtaburl.js68
-rw-r--r--application/palemoon/components/preferences/preferences.xul4
-rw-r--r--application/palemoon/components/preferences/tabs.js54
-rw-r--r--application/palemoon/components/preferences/tabs.xul2
6 files changed, 80 insertions, 56 deletions
diff --git a/application/palemoon/components/preferences/jar.mn b/application/palemoon/components/preferences/jar.mn
index 2e2949306..47909ddc9 100644
--- a/application/palemoon/components/preferences/jar.mn
+++ b/application/palemoon/components/preferences/jar.mn
@@ -24,6 +24,7 @@ browser.jar:
content/browser/preferences/languages.js
* content/browser/preferences/main.xul
content/browser/preferences/main.js
+ content/browser/preferences/newtaburl.js
content/browser/preferences/permissions.xul
* content/browser/preferences/permissions.js
* content/browser/preferences/preferences.xul
diff --git a/application/palemoon/components/preferences/main.xul b/application/palemoon/components/preferences/main.xul
index 7634056eb..bb51947b0 100644
--- a/application/palemoon/components/preferences/main.xul
+++ b/application/palemoon/components/preferences/main.xul
@@ -96,6 +96,7 @@
type="autocomplete" autocompletesearch="history"
onsyncfrompreference="return gMainPane.syncFromHomePref();"
onsynctopreference="return gMainPane.syncToHomePref(this.value);"
+ oninput="gNewtabUrl.writeNewtabUrl(null, this.value);"
placeholder="&abouthome.pageTitle;"
preference="browser.startup.homepage"/>
</hbox>
@@ -103,15 +104,15 @@
<button label="" accesskey="&useCurrentPage.accesskey;"
label1="&useCurrentPage.label;"
label2="&useMultiple.label;"
- oncommand="gMainPane.setHomePageToCurrent();"
+ oncommand="gMainPane.setHomePageToCurrent(); gNewtabUrl.writeNewtabUrl();"
id="useCurrent"
preference="pref.browser.homepage.disable_button.current_page"/>
<button label="&chooseBookmark.label;" accesskey="&chooseBookmark.accesskey;"
- oncommand="gMainPane.setHomePageToBookmark();"
+ oncommand="gMainPane.setHomePageToBookmark(); gNewtabUrl.writeNewtabUrl();"
id="useBookmark"
preference="pref.browser.homepage.disable_button.bookmark_page"/>
<button label="&restoreDefault.label;" accesskey="&restoreDefault.accesskey;"
- oncommand="gMainPane.restoreDefaultHomePage();"
+ oncommand="gMainPane.restoreDefaultHomePage(); gNewtabUrl.writeNewtabUrl();"
id="restoreDefaultHomePage"
preference="pref.browser.homepage.disable_button.restore_default"/>
</hbox>
diff --git a/application/palemoon/components/preferences/newtaburl.js b/application/palemoon/components/preferences/newtaburl.js
new file mode 100644
index 000000000..ac0eec1c5
--- /dev/null
+++ b/application/palemoon/components/preferences/newtaburl.js
@@ -0,0 +1,68 @@
+/* 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 = Services.prefs.getDefaultBranch("browser.")
+ .getComplexValue("startup.homepage",
+ Components.interfaces.nsIPrefLocalizedString).data;
+ 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); }
+ }
+};
diff --git a/application/palemoon/components/preferences/preferences.xul b/application/palemoon/components/preferences/preferences.xul
index 2f00b960a..a1d9c8cf7 100644
--- a/application/palemoon/components/preferences/preferences.xul
+++ b/application/palemoon/components/preferences/preferences.xul
@@ -56,10 +56,10 @@
#endif
#endif
onunload="if (typeof gSecurityPane != 'undefined') gSecurityPane.syncAddonSecurityLevel();"
- ondialogaccept="if (typeof gTabsPane != 'undefined') gTabsPane.writeNewtabUrl();
- return true;">
+ ondialogaccept="gNewtabUrl.writeNewtabUrl();">
<script type="application/javascript" src="chrome://browser/content/utilityOverlay.js"/>
+ <script type="application/javascript" src="chrome://browser/content/preferences/newtaburl.js"/>
<stringbundle id="bundleBrand" src="chrome://branding/locale/brand.properties"/>
<stringbundle id="bundlePreferences"
diff --git a/application/palemoon/components/preferences/tabs.js b/application/palemoon/components/preferences/tabs.js
index f0ad8490c..17084a770 100644
--- a/application/palemoon/components/preferences/tabs.js
+++ b/application/palemoon/components/preferences/tabs.js
@@ -85,11 +85,14 @@ var gTabsPane = {
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 "http://start.palemoon.org/":
+ case defaultStartupHomepage:
newtabUrlChoice.value = 2;
break;
case newtabUrlSanitizedPref.value:
@@ -104,54 +107,5 @@ var gTabsPane = {
// We need this to consider instantApply.
this.newtabPageCustom = newtabUrlPref.value;
}
- },
-
- /**
- * 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's ondialogaccept handler and
- * from browser.newtab.choice's oncommand to consider instantApply.
- */
- writeNewtabUrl: function(newtabUrlChoice) {
- try {
- if (newtabUrlChoice) {
- if (Services.prefs.getBoolPref("browser.preferences.instantApply")) {
- newtabUrlChoice = parseInt(newtabUrlChoice);
- } else {
- return;
- }
- } else {
- newtabUrlChoice = Services.prefs.getIntPref("browser.newtab.choice");
- }
- let 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); }
}
};
diff --git a/application/palemoon/components/preferences/tabs.xul b/application/palemoon/components/preferences/tabs.xul
index f5b44b776..64529d60d 100644
--- a/application/palemoon/components/preferences/tabs.xul
+++ b/application/palemoon/components/preferences/tabs.xul
@@ -85,7 +85,7 @@
<menulist
id="newtabPage"
preference="browser.newtab.choice"
- oncommand="gTabsPane.writeNewtabUrl(event.target.value);">
+ oncommand="gNewtabUrl.writeNewtabUrl(event.target.value);">
<menupopup>
<menuitem label="&newtabPage.custom.label;" value="0" id="newtabPageCustom" hidden="true" />
<menuitem label="&newtabPage.blank.label;" value="1" />