mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-21 17:59:34 +00:00
Bug 696823 - follow-up: adjust progress bar max to account for client engine sync notification. r=philikon
This commit is contained in:
parent
f648cb573d
commit
bcfc098026
@ -44,12 +44,14 @@ let gProgressBar;
|
||||
let gCounter = 0;
|
||||
|
||||
function onLoad(event) {
|
||||
Services.obs.addObserver(increaseProgressBar, "weave:engine:sync:finish", false);
|
||||
Services.obs.addObserver(increaseProgressBar, "weave:engine:sync:error", false);
|
||||
Services.obs.addObserver(onEngineSync, "weave:engine:sync:finish", false);
|
||||
Services.obs.addObserver(onEngineSync, "weave:engine:sync:error", false);
|
||||
Services.obs.addObserver(onServiceSync, "weave:service:sync:finish", false);
|
||||
Services.obs.addObserver(onServiceSync, "weave:service:sync:error", false);
|
||||
|
||||
gProgressBar = document.getElementById('uploadProgressBar');
|
||||
|
||||
if (Services.prefs.getPrefType("services.sync.firstSync") != Ci.nsIPrefBranch.PREF_INVALID) {
|
||||
gProgressBar.max = Weave.Engines.getEnabled().length;
|
||||
gProgressBar.style.display = "inline";
|
||||
}
|
||||
else {
|
||||
@ -58,15 +60,46 @@ function onLoad(event) {
|
||||
}
|
||||
|
||||
function onUnload(event) {
|
||||
Services.obs.removeObserver(increaseProgressBar, "weave:engine:sync:finish");
|
||||
Services.obs.removeObserver(increaseProgressBar, "weave:engine:sync:error");
|
||||
cleanUpObservers();
|
||||
}
|
||||
|
||||
function increaseProgressBar(){
|
||||
function cleanUpObservers() {
|
||||
try {
|
||||
Services.obs.removeObserver(onEngineSync, "weave:engine:sync:finish", false);
|
||||
Services.obs.removeObserver(onEngineSync, "weave:engine:sync:error", false);
|
||||
Services.obs.removeObserver(onServiceSync, "weave:service:sync:finish", false);
|
||||
Services.obs.removeObserver(onServiceSync, "weave:service:sync:error", false);
|
||||
}
|
||||
catch (e) {
|
||||
// may be double called by unload & exit. Ignore.
|
||||
}
|
||||
}
|
||||
|
||||
function onEngineSync(subject, topic, data) {
|
||||
// The Clients engine syncs first. At this point we don't necessarily know
|
||||
// yet how many engines will be enabled, so we'll ignore the Clients engine
|
||||
// and evaluate how many engines are enabled when the first "real" engine
|
||||
// syncs.
|
||||
if (data == "clients") {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!gCounter &&
|
||||
Services.prefs.getPrefType("services.sync.firstSync") != Ci.nsIPrefBranch.PREF_INVALID) {
|
||||
gProgressBar.max = Weave.Engines.getEnabled().length;
|
||||
}
|
||||
|
||||
gCounter += 1;
|
||||
gProgressBar.setAttribute("value", gCounter);
|
||||
}
|
||||
|
||||
function onServiceSync(subject, topic, data) {
|
||||
// To address the case where 0 engines are synced, we will fill the
|
||||
// progress bar so the user knows that the sync has finished.
|
||||
gProgressBar.setAttribute("value", gProgressBar.max);
|
||||
cleanUpObservers();
|
||||
}
|
||||
|
||||
function closeTab() {
|
||||
window.close();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user