зеркало из https://github.com/mozilla/gecko-dev.git
Bug 804143 - [Identity] Make id flow OOP. r=benadida
This commit is contained in:
Родитель
b7ab9ce7e3
Коммит
b576b5842f
|
@ -33,7 +33,6 @@ log("\n\n======================= identity.js =======================\n\n");
|
|||
// This script may be injected more than once into an iframe.
|
||||
// Ensure we don't redefine contstants
|
||||
if (typeof kIdentityJSLoaded === 'undefined') {
|
||||
const kReceivedIdentityAssertion = "received-id-assertion";
|
||||
const kIdentityDelegateWatch = "identity-delegate-watch";
|
||||
const kIdentityDelegateRequest = "identity-delegate-request";
|
||||
const kIdentityDelegateLogout = "identity-delegate-logout";
|
||||
|
@ -66,33 +65,10 @@ function identityCall(message) {
|
|||
* destroys our context.
|
||||
*/
|
||||
function closeIdentityDialog() {
|
||||
let randomId = uuidgen.generateUUID().toString();
|
||||
let id = kReceivedIdentityAssertion + "-" + randomId;
|
||||
let browser = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
|
||||
let detail = {
|
||||
type: kReceivedIdentityAssertion,
|
||||
id: id,
|
||||
showUI: showUI
|
||||
};
|
||||
|
||||
// In order to avoid race conditions, we wait for the UI to notify that
|
||||
// it has successfully closed the identity flow and has recovered the
|
||||
// caller app, before notifying the parent process.
|
||||
content.addEventListener("mozContentEvent", function closeIdentityDialogFinished(evt) {
|
||||
content.removeEventListener("mozContentEvent", closeIdentityDialogFinished);
|
||||
|
||||
if (evt.detail.id == id && aCallback) {
|
||||
aCallback();
|
||||
}
|
||||
});
|
||||
|
||||
// tell gecko we're done. fire and forget.
|
||||
log('ready to close');
|
||||
// tell gecko we're done.
|
||||
func = null; options = null;
|
||||
sendAsyncMessage(kIdentityDelegateFinished);
|
||||
|
||||
// tell gaia to shut us down
|
||||
browser.shell.sendChromeEvent(detail);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -92,6 +92,7 @@ const kOpenIdentityDialog = "open-id-dialog";
|
|||
const kCloseIdentityDialog = "close-id-dialog";
|
||||
|
||||
// Observer messages to communicate to shim
|
||||
const kReceivedIdentityAssertion = "received-id-assertion";
|
||||
const kIdentityDelegateWatch = "identity-delegate-watch";
|
||||
const kIdentityDelegateRequest = "identity-delegate-request";
|
||||
const kIdentityDelegateLogout = "identity-delegate-logout";
|
||||
|
@ -218,9 +219,20 @@ let Pipe = {
|
|||
// If we receive a "finished" event, then the delegate is done, so
|
||||
// we shut down the pipe and clean up.
|
||||
mm.addMessageListener(kIdentityControllerDoMethod, aMessageCallback);
|
||||
mm.addMessageListener(kIdentityDelegateFinished, function identityDelegateFinished(message) {
|
||||
mm.addMessageListener(kIdentityDelegateFinished, function identityDelegateFinished() {
|
||||
// clean up listeners
|
||||
mm.removeMessageListener(kIdentityDelegateFinished, identityDelegateFinished);
|
||||
mm.removeMessageListener(kIdentityControllerDoMethod, aMessageCallback);
|
||||
|
||||
let id = kReceivedIdentityAssertion + "-" + getRandomId();
|
||||
let detail = {
|
||||
type: kReceivedIdentityAssertion,
|
||||
showUI: aGaiaOptions.showUI || false,
|
||||
id: id
|
||||
};
|
||||
log('tell gaia to close the dialog');
|
||||
// tell gaia to close the dialog
|
||||
GaiaInterface.sendChromeEvent(detail);
|
||||
});
|
||||
|
||||
mm.sendAsyncMessage(aGaiaOptions.message, aRpOptions);
|
||||
|
|
Загрузка…
Ссылка в новой задаче