diff options
author | Moonchild <mcwerewolf@wolfbeast.com> | 2018-11-30 22:02:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-30 22:02:01 +0100 |
commit | d7bb175713020feba859d4a769d632db2946e6ef (patch) | |
tree | e45aa44010da28d0f0a465043f908dc8a1a9be8c /application/palemoon/components/sync/progress.js | |
parent | 26f7e0ce36350d309c6b0fbd6261adbe98e93aab (diff) | |
parent | 2fa90d9b3879f9f96f0b6fc1b589ae4f2c62a990 (diff) | |
download | UXP-d7bb175713020feba859d4a769d632db2946e6ef.tar UXP-d7bb175713020feba859d4a769d632db2946e6ef.tar.gz UXP-d7bb175713020feba859d4a769d632db2946e6ef.tar.lz UXP-d7bb175713020feba859d4a769d632db2946e6ef.tar.xz UXP-d7bb175713020feba859d4a769d632db2946e6ef.zip |
Merge pull request #892 from binaryoutcast/pmTreeCleanup
PR to resolve #889 - Clean up the Pale Moon tree
Diffstat (limited to 'application/palemoon/components/sync/progress.js')
-rw-r--r-- | application/palemoon/components/sync/progress.js | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/application/palemoon/components/sync/progress.js b/application/palemoon/components/sync/progress.js new file mode 100644 index 000000000..101160fa8 --- /dev/null +++ b/application/palemoon/components/sync/progress.js @@ -0,0 +1,71 @@ +/* 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/. */ + +const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; +Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://services-sync/main.js"); + +var gProgressBar; +var gCounter = 0; + +function onLoad(event) { + 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.hidden = false; + } + else { + gProgressBar.hidden = true; + } +} + +function onUnload(event) { + cleanUpObservers(); +} + +function cleanUpObservers() { + try { + Services.obs.removeObserver(onEngineSync, "weave:engine:sync:finish"); + Services.obs.removeObserver(onEngineSync, "weave:engine:sync:error"); + Services.obs.removeObserver(onServiceSync, "weave:service:sync:finish"); + Services.obs.removeObserver(onServiceSync, "weave:service:sync:error"); + } + 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.Service.engineManager.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(); +} |