Bug 1361285 - add new addresses and credit-cards engines to about:preferences. r?eoger
MozReview-Commit-ID: GOxkmdKCVFt
--- a/browser/components/preferences/in-content-new/sync.js
+++ b/browser/components/preferences/in-content-new/sync.js
@@ -21,29 +21,27 @@ const FXA_PAGE_LOGGED_IN = 1;
// We are in a successful verified state - everything should work!
const FXA_LOGIN_VERIFIED = 0;
// We have logged in to an unverified account.
const FXA_LOGIN_UNVERIFIED = 1;
// We are logged in locally, but the server rejected our credentials.
const FXA_LOGIN_FAILED = 2;
var gSyncPane = {
- prefArray: ["engine.bookmarks", "engine.passwords", "engine.prefs",
- "engine.tabs", "engine.history"],
-
get page() {
return document.getElementById("weavePrefsDeck").selectedIndex;
},
set page(val) {
document.getElementById("weavePrefsDeck").selectedIndex = val;
},
init() {
this._setupEventListeners();
+ this._adjustForPrefs();
// If the Service hasn't finished initializing, wait for it.
let xps = Components.classes["@mozilla.org/weave/service;1"]
.getService(Components.interfaces.nsISupports)
.wrappedJSObject;
if (xps.ready) {
this._init();
@@ -68,16 +66,42 @@ var gSyncPane = {
};
Services.obs.addObserver(onReady, "weave:service:ready");
window.addEventListener("unload", onUnload);
xps.ensureLoaded();
},
+ // make whatever tweaks we need based on preferences.
+ _adjustForPrefs() {
+ // These 2 engines are unique in that there are prefs that make the
+ // entire engine unavailable (which is distinct from "disabled").
+ let enginePrefs = [
+ ["services.sync.engine.addresses.available", "engine.addresses"],
+ ["services.sync.engine.creditcards.available", "engine.creditcards"],
+ ];
+ let numHidden = 0;
+ for (let [availablePref, prefName] of enginePrefs) {
+ if (!Services.prefs.getBoolPref(availablePref)) {
+ let checkbox = document.querySelector("[preference=\"" + prefName + "\"]");
+ checkbox.hidden = true;
+ numHidden += 1;
+ }
+ }
+ // If we hid both, the list of prefs is unbalanced, so move "history" to
+ // the second column. (If we only moved one, it's still unbalanced, but
+ // there's an odd number of engines so that can't be avoided)
+ if (numHidden == 2) {
+ let history = document.querySelector("[preference=\"engine.history\"]");
+ let addons = document.querySelector("[preference=\"engine.addons\"]");
+ addons.parentNode.insertBefore(history, addons);
+ }
+ },
+
_showLoadPage(xps) {
let username = Services.prefs.getCharPref("services.sync.username", "");
if (!username) {
this.page = FXA_PAGE_LOGGED_OUT;
return;
}
// Use cached values while we wait for the up-to-date values
--- a/browser/components/preferences/in-content-new/sync.xul
+++ b/browser/components/preferences/in-content-new/sync.xul
@@ -18,16 +18,22 @@
name="services.sync.engine.tabs"
type="bool"/>
<preference id="engine.prefs"
name="services.sync.engine.prefs"
type="bool"/>
<preference id="engine.passwords"
name="services.sync.engine.passwords"
type="bool"/>
+ <preference id="engine.addresses"
+ name="services.sync.engine.addresses"
+ type="bool"/>
+ <preference id="engine.creditcards"
+ name="services.sync.engine.creditcards"
+ type="bool"/>
</preferences>
<script type="application/javascript"
src="chrome://browser/content/preferences/in-content-new/sync.js"/>
<hbox id="header-sync"
class="header"
hidden="true"
@@ -156,27 +162,33 @@
accesskey="&engine.tabs.accesskey;"
preference="engine.tabs"/>
<checkbox label="&engine.bookmarks.label;"
accesskey="&engine.bookmarks.accesskey;"
preference="engine.bookmarks"/>
<checkbox label="&engine.logins.label;"
accesskey="&engine.logins.accesskey;"
preference="engine.passwords"/>
- </vbox>
- <vbox align="start" flex="1">
<checkbox label="&engine.history.label;"
accesskey="&engine.history.accesskey;"
preference="engine.history"/>
+ </vbox>
+ <vbox align="start" flex="1">
<checkbox label="&engine.addons.label;"
accesskey="&engine.addons.accesskey;"
preference="engine.addons"/>
<checkbox label="&engine.prefs.label;"
accesskey="&engine.prefs.accesskey;"
preference="engine.prefs"/>
+ <checkbox label="&engine.addresses.label;"
+ accesskey="&engine.addresses.accesskey;"
+ preference="engine.addresses"/>
+ <checkbox label="&engine.creditcards.label;"
+ accesskey="&engine.creditcards.accesskey;"
+ preference="engine.creditcards"/>
</vbox>
<spacer/>
</hbox>
</groupbox>
</vbox>
<vbox>
<html:img class="fxaSyncIllustration" src="chrome://browser/skin/fxa/sync-illustration.svg"/>
</vbox>
--- a/browser/components/preferences/in-content/sync.js
+++ b/browser/components/preferences/in-content/sync.js
@@ -21,29 +21,27 @@ const FXA_PAGE_LOGGED_IN = 1;
// We are in a successful verified state - everything should work!
const FXA_LOGIN_VERIFIED = 0;
// We have logged in to an unverified account.
const FXA_LOGIN_UNVERIFIED = 1;
// We are logged in locally, but the server rejected our credentials.
const FXA_LOGIN_FAILED = 2;
var gSyncPane = {
- prefArray: ["engine.bookmarks", "engine.passwords", "engine.prefs",
- "engine.tabs", "engine.history"],
-
get page() {
return document.getElementById("weavePrefsDeck").selectedIndex;
},
set page(val) {
document.getElementById("weavePrefsDeck").selectedIndex = val;
},
init() {
this._setupEventListeners();
+ this._adjustForPrefs();
// If the Service hasn't finished initializing, wait for it.
let xps = Components.classes["@mozilla.org/weave/service;1"]
.getService(Components.interfaces.nsISupports)
.wrappedJSObject;
if (xps.ready) {
this._init();
@@ -68,16 +66,42 @@ var gSyncPane = {
};
Services.obs.addObserver(onReady, "weave:service:ready");
window.addEventListener("unload", onUnload);
xps.ensureLoaded();
},
+ // make whatever tweaks we need based on preferences.
+ _adjustForPrefs() {
+ // These 2 engines are unique in that there are prefs that make the
+ // entire engine unavailable (which is distinct from "disabled").
+ let enginePrefs = [
+ ["services.sync.engine.addresses.available", "engine.addresses"],
+ ["services.sync.engine.creditcards.available", "engine.creditcards"],
+ ];
+ let numHidden = 0;
+ for (let [availablePref, prefName] of enginePrefs) {
+ if (!Services.prefs.getBoolPref(availablePref)) {
+ let checkbox = document.querySelector("[preference=\"" + prefName + "\"]");
+ checkbox.hidden = true;
+ numHidden += 1;
+ }
+ }
+ // If we hid both, the list of prefs is unbalanced, so move "history" to
+ // the second column. (If we only moved one, it's still unbalanced, but
+ // there's an odd number of engines so that can't be avoided)
+ if (numHidden == 2) {
+ let history = document.querySelector("[preference=\"engine.history\"]");
+ let addons = document.querySelector("[preference=\"engine.addons\"]");
+ addons.parentNode.insertBefore(history, addons);
+ }
+ },
+
_showLoadPage(xps) {
let username = Services.prefs.getCharPref("services.sync.username", "");
if (!username) {
this.page = FXA_PAGE_LOGGED_OUT;
return;
}
// Use cached values while we wait for the up-to-date values
--- a/browser/components/preferences/in-content/sync.xul
+++ b/browser/components/preferences/in-content/sync.xul
@@ -18,16 +18,22 @@
name="services.sync.engine.tabs"
type="bool"/>
<preference id="engine.prefs"
name="services.sync.engine.prefs"
type="bool"/>
<preference id="engine.passwords"
name="services.sync.engine.passwords"
type="bool"/>
+ <preference id="engine.addresses"
+ name="services.sync.engine.addresses"
+ type="bool"/>
+ <preference id="engine.creditcards"
+ name="services.sync.engine.creditcards"
+ type="bool"/>
</preferences>
<script type="application/javascript"
src="chrome://browser/content/preferences/in-content/sync.js"/>
<hbox id="header-sync"
class="header"
hidden="true"
@@ -156,27 +162,33 @@
accesskey="&engine.tabs.accesskey;"
preference="engine.tabs"/>
<checkbox label="&engine.bookmarks.label;"
accesskey="&engine.bookmarks.accesskey;"
preference="engine.bookmarks"/>
<checkbox label="&engine.logins.label;"
accesskey="&engine.logins.accesskey;"
preference="engine.passwords"/>
- </vbox>
- <vbox align="start" flex="1">
<checkbox label="&engine.history.label;"
accesskey="&engine.history.accesskey;"
preference="engine.history"/>
+ </vbox>
+ <vbox align="start" flex="1">
<checkbox label="&engine.addons.label;"
accesskey="&engine.addons.accesskey;"
preference="engine.addons"/>
<checkbox label="&engine.prefs.label;"
accesskey="&engine.prefs.accesskey;"
preference="engine.prefs"/>
+ <checkbox label="&engine.addresses.label;"
+ accesskey="&engine.addresses.accesskey;"
+ preference="engine.addresses"/>
+ <checkbox label="&engine.creditcards.label;"
+ accesskey="&engine.creditcards.accesskey;"
+ preference="engine.creditcards"/>
</vbox>
<spacer/>
</hbox>
</groupbox>
</vbox>
<vbox>
<html:img class="fxaSyncIllustration" src="chrome://browser/skin/fxa/sync-illustration.svg"/>
</vbox>
--- a/browser/locales/en-US/chrome/browser/preferences-old/sync.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences-old/sync.dtd
@@ -11,16 +11,20 @@
<!ENTITY engine.history.label "History">
<!ENTITY engine.history.accesskey "r">
<!ENTITY engine.logins.label "Logins">
<!ENTITY engine.logins.accesskey "L">
<!ENTITY engine.prefs.label "Preferences">
<!ENTITY engine.prefs.accesskey "S">
<!ENTITY engine.addons.label "Add-ons">
<!ENTITY engine.addons.accesskey "A">
+<!ENTITY engine.addresses.label "Addresses">
+<!ENTITY engine.addresses.accesskey "e">
+<!ENTITY engine.creditcards.label "Credit cards">
+<!ENTITY engine.creditcards.accesskey "C">
<!-- Device Settings -->
<!ENTITY fxaSyncDeviceName.label "Device Name">
<!ENTITY changeSyncDeviceName.label "Change Device Name…">
<!ENTITY changeSyncDeviceName.accesskey "h">
<!ENTITY cancelChangeSyncDeviceName.label "Cancel">
<!ENTITY cancelChangeSyncDeviceName.accesskey "n">
<!ENTITY saveChangeSyncDeviceName.label "Save">
--- a/browser/locales/en-US/chrome/browser/preferences/sync.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/sync.dtd
@@ -11,16 +11,20 @@
<!ENTITY engine.history.label "History">
<!ENTITY engine.history.accesskey "r">
<!ENTITY engine.logins.label "Logins">
<!ENTITY engine.logins.accesskey "L">
<!ENTITY engine.prefs.label "Preferences">
<!ENTITY engine.prefs.accesskey "S">
<!ENTITY engine.addons.label "Add-ons">
<!ENTITY engine.addons.accesskey "A">
+<!ENTITY engine.addresses.label "Addresses">
+<!ENTITY engine.addresses.accesskey "e">
+<!ENTITY engine.creditcards.label "Credit cards">
+<!ENTITY engine.creditcards.accesskey "C">
<!-- Device Settings -->
<!ENTITY fxaSyncDeviceName.label "Device Name">
<!ENTITY changeSyncDeviceName2.label "Change Device Name…">
<!ENTITY changeSyncDeviceName2.accesskey "h">
<!ENTITY cancelChangeSyncDeviceName.label "Cancel">
<!ENTITY cancelChangeSyncDeviceName.accesskey "n">
<!ENTITY saveChangeSyncDeviceName.label "Save">