diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc
index 0b5b1030b0f..d65de7c73db 100644
--- a/browser/base/content/browser-sets.inc
+++ b/browser/base/content/browser-sets.inc
@@ -177,6 +177,14 @@
+
+
+
+
+
diff --git a/browser/base/content/browser-syncui.js b/browser/base/content/browser-syncui.js
index e122c5f0517..d3b4cac26c9 100644
--- a/browser/base/content/browser-syncui.js
+++ b/browser/base/content/browser-syncui.js
@@ -77,6 +77,10 @@ var gSyncUI = {
Services.obs.addObserver(this, topic, true);
}, this);
+ // initial label for the sync buttons.
+ let broadcaster = document.getElementById("sync-status");
+ broadcaster.setAttribute("label", this._stringBundle.GetStringFromName("syncnow.label"));
+
this.updateUI();
},
@@ -176,14 +180,10 @@ var gSyncUI = {
this.log.debug("onActivityStart with numActive", this._numActiveSyncTasks);
if (++this._numActiveSyncTasks == 1) {
- let button = document.getElementById("sync-button");
- if (button) {
- button.setAttribute("status", "active");
- }
- let container = document.getElementById("PanelUI-footer-fxa");
- if (container) {
- container.setAttribute("syncstatus", "active");
- }
+ let broadcaster = document.getElementById("sync-status");
+ broadcaster.setAttribute("syncstatus", "active");
+ broadcaster.setAttribute("label", this._stringBundle.GetStringFromName("syncing.label"));
+ broadcaster.setAttribute("disabled", "true");
}
this.updateUI();
},
@@ -203,14 +203,10 @@ var gSyncUI = {
return; // active tasks are still ongoing...
}
- let syncButton = document.getElementById("sync-button");
- if (syncButton) {
- syncButton.removeAttribute("status");
- }
- let fxaContainer = document.getElementById("PanelUI-footer-fxa");
- if (fxaContainer) {
- fxaContainer.removeAttribute("syncstatus");
- }
+ let broadcaster = document.getElementById("sync-status");
+ broadcaster.removeAttribute("syncstatus");
+ broadcaster.removeAttribute("disabled");
+ broadcaster.setAttribute("label", this._stringBundle.GetStringFromName("syncnow.label"));
this.updateUI();
},
@@ -313,8 +309,8 @@ var gSyncUI = {
gFxAccounts.openSignInAgainPage(entryPoint);
},
- /* Update the tooltip for the Sync Toolbar button and the Sync spinner in the
- FxA hamburger area.
+ /* Update the tooltip for the sync-status broadcaster (which will update the
+ Sync Toolbar button and the Sync spinner in the FxA hamburger area.)
If Sync is configured, the tooltip is when the last sync occurred,
otherwise the tooltip reflects the fact that Sync needs to be
(re-)configured.
@@ -364,16 +360,13 @@ var gSyncUI = {
// sure it hasn't been torn down since we started.
if (!gBrowser)
return;
- let syncButton = document.getElementById("sync-button");
- let statusButton = document.getElementById("PanelUI-fxa-icon");
- for (let button of [syncButton, statusButton]) {
- if (button) {
- if (tooltiptext) {
- button.setAttribute("tooltiptext", tooltiptext);
- } else {
- button.removeAttribute("tooltiptext");
- }
+ let broadcaster = document.getElementById("sync-status");
+ if (broadcaster) {
+ if (tooltiptext) {
+ broadcaster.setAttribute("tooltiptext", tooltiptext);
+ } else {
+ broadcaster.removeAttribute("tooltiptext");
}
}
}),
diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul
index 28b8b6b8bb9..a9195ee7d66 100644
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -1041,6 +1041,7 @@
diff --git a/browser/base/content/test/general/browser_syncui.js b/browser/base/content/test/general/browser_syncui.js
index 48b9b419a5b..815a9f72b5f 100644
--- a/browser/base/content/test/general/browser_syncui.js
+++ b/browser/base/content/test/general/browser_syncui.js
@@ -128,14 +128,17 @@ add_task(function* testSyncLoginError() {
});
function checkButtonsStatus(shouldBeActive) {
- let button = document.getElementById("sync-button");
- let fxaContainer = document.getElementById("PanelUI-footer-fxa");
- if (shouldBeActive) {
- Assert.equal(button.getAttribute("status"), "active");
- Assert.equal(fxaContainer.getAttribute("syncstatus"), "active");
- } else {
- Assert.ok(!button.hasAttribute("status"));
- Assert.ok(!fxaContainer.hasAttribute("syncstatus"));
+ for (let eid of [
+ "sync-status", // the broadcaster itself.
+ "sync-button", // the main sync button which observes the broadcaster
+ "PanelUI-fxa-icon", // the sync icon in the fxa footer that observes it.
+ ]) {
+ let elt = document.getElementById(eid);
+ if (shouldBeActive) {
+ Assert.equal(elt.getAttribute("syncstatus"), "active", `${eid} should be active`);;
+ } else {
+ Assert.ok(!elt.hasAttribute("syncstatus"), `${eid} should have no status attr`);
+ }
}
}
diff --git a/browser/components/customizableui/content/panelUI.inc.xul b/browser/components/customizableui/content/panelUI.inc.xul
index b8aaf5f7f30..9c5ad033092 100644
--- a/browser/components/customizableui/content/panelUI.inc.xul
+++ b/browser/components/customizableui/content/panelUI.inc.xul
@@ -34,7 +34,10 @@
+ closemenu="none">
+
+
+