Bug 976633 - Clicking Cancel on merge warning should not initiate Firefox Account creation. r=markh

This commit is contained in:
Chris Karlof 2014-03-14 17:59:26 -07:00
parent cfd1489482
commit f92e71f266

View File

@ -81,6 +81,15 @@ function promptForRelink(acctName) {
return pressed == 0; // 0 is the "continue" button
}
// If the last fxa account used for sync isn't this account, we display
// a modal dialog checking they really really want to do this...
// (This is sync-specific, so ideally would be in sync's identity module,
// but it's a little more seamless to do here, and sync is currently the
// only fxa consumer, so...
function shouldAllowRelink(acctName) {
return !needRelinkWarning(acctName) || promptForRelink(acctName);
}
let wrapper = {
iframe: null,
@ -132,20 +141,20 @@ let wrapper = {
delete accountData.customizeSync;
}
// If the last fxa account used for sync isn't this account, we display
// a modal dialog checking they really really want to do this...
// (This is sync-specific, so ideally would be in sync's identity module,
// but it's a little more seamless to do here, and sync is currently the
// only fxa consumer, so...
// We need to confirm a relink - see shouldAllowRelink for more
let newAccountEmail = accountData.email;
if (needRelinkWarning(newAccountEmail) && !promptForRelink(newAccountEmail)) {
// The hosted code may have already checked for the relink situation
// by sending the can_link_account command. If it did, then
// it will indicate we don't need to ask twice.
if (!accountData.verifiedCanLinkAccount && !shouldAllowRelink(newAccountEmail)) {
// we need to tell the page we successfully received the message, but
// then bail without telling fxAccounts
this.injectData("message", { status: "login" });
// and reload the page or else it remains in a "signed in" state.
window.location.reload();
// and re-init the page by navigating to about:accounts
window.location = "about:accounts";
return;
}
delete accountData.verifiedCanLinkAccount;
// Remember who it was so we can log out next time.
setPreviousAccountNameHash(newAccountEmail);
@ -175,6 +184,12 @@ let wrapper = {
);
},
onCanLinkAccount: function(accountData) {
// We need to confirm a relink - see shouldAllowRelink for more
let ok = shouldAllowRelink(accountData.email);
this.injectData("message", { status: "can_link_account", data: { ok: ok } });
},
/**
* onSessionStatus sends the currently signed in user's credentials
* to the jelly.
@ -208,6 +223,9 @@ let wrapper = {
case "login":
this.onLogin(data);
break;
case "can_link_account":
this.onCanLinkAccount(data);
break;
case "session_status":
this.onSessionStatus(data);
break;