зеркало из https://github.com/mozilla/gecko-dev.git
Bug 966342: Tools menu shows "Sync now" to unverified users in some cases, r=markh
Changes include: - have gSyncUI._needsSetup check Weave.Service.identity._signedInUser (if already set) and return true if the user is not verified - make the menuitem hiding/showing code in gSyncUI.updateUI a bit easier to follow --HG-- extra : rebase_source : b5a99354e13db798ea3d0380391db1993bf36408
This commit is contained in:
Родитель
7d0e2ba924
Коммит
623533edcd
|
@ -88,16 +88,37 @@ let gSyncUI = {
|
|||
_wasDelayed: false,
|
||||
|
||||
_needsSetup: function SUI__needsSetup() {
|
||||
// We want to treat "account needs verification" as "needs setup". We don't
|
||||
// know what the user's verified state is until Sync is initialized, though,
|
||||
// and we need to get an answer here synchronously (can't wait for
|
||||
// getSignedInUser). So "reach in" to Weave.Service.identity to get the
|
||||
// answer here, and we'll just have to deal with this not having an answer
|
||||
// before Sync is initialized.
|
||||
|
||||
// Referencing Weave.Service will implicitly initialize sync, and we don't
|
||||
// want to force that - so first check if it is ready.
|
||||
let service = Cc["@mozilla.org/weave/service;1"]
|
||||
.getService(Components.interfaces.nsISupports)
|
||||
.wrappedJSObject;
|
||||
if (service.ready && Weave.Service.identity._signedInUser) {
|
||||
// If we have a signed in user already, and that user is not verified,
|
||||
// revert to the "needs setup" state.
|
||||
if (!Weave.Service.identity._signedInUser.verified) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
let firstSync = "";
|
||||
try {
|
||||
firstSync = Services.prefs.getCharPref("services.sync.firstSync");
|
||||
} catch (e) { }
|
||||
|
||||
return Weave.Status.checkSetup() == Weave.CLIENT_NOT_CONFIGURED ||
|
||||
firstSync == "notReady";
|
||||
},
|
||||
|
||||
_loginFailed: function () {
|
||||
// Referencing Weave.Service will implicitly initialize sync, and we don't
|
||||
// Referencing Weave.Status will import a bunch of modules, and we don't
|
||||
// want to force that - so first check if it is ready.
|
||||
let service = Cc["@mozilla.org/weave/service;1"]
|
||||
.getService(Components.interfaces.nsISupports)
|
||||
|
@ -105,15 +126,26 @@ let gSyncUI = {
|
|||
if (!service.ready) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return Weave.Status.login == Weave.LOGIN_FAILED_LOGIN_REJECTED;
|
||||
},
|
||||
|
||||
updateUI: function SUI_updateUI() {
|
||||
let needsSetup = this._needsSetup();
|
||||
let loginFailed = this._loginFailed();
|
||||
document.getElementById("sync-setup-state").hidden = loginFailed || !needsSetup;
|
||||
document.getElementById("sync-syncnow-state").hidden = loginFailed || needsSetup;
|
||||
document.getElementById("sync-reauth-state").hidden = !loginFailed;
|
||||
|
||||
// Start off with a clean slate
|
||||
document.getElementById("sync-reauth-state").hidden = true;
|
||||
document.getElementById("sync-setup-state").hidden = true;
|
||||
document.getElementById("sync-syncnow-state").hidden = true;
|
||||
|
||||
if (loginFailed) {
|
||||
document.getElementById("sync-reauth-state").hidden = false;
|
||||
} else if (needsSetup) {
|
||||
document.getElementById("sync-setup-state").hidden = false;
|
||||
} else {
|
||||
document.getElementById("sync-syncnow-state").hidden = false;
|
||||
}
|
||||
|
||||
if (!gBrowser)
|
||||
return;
|
||||
|
|
Загрузка…
Ссылка в новой задаче