Bug 804143 - [Identity] Make id flow OOP. r=benadida

This commit is contained in:
Zach Carter 2012-11-02 19:48:57 -04:00
Родитель b7ab9ce7e3
Коммит b576b5842f
2 изменённых файлов: 15 добавлений и 27 удалений

Просмотреть файл

@ -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);