Mercurial > my-ubiquity-commands
diff secure-data-storage/secure-data-storage.js @ 17:f3e03596fcf9
Added secure data storage command feed.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Wed, 08 Apr 2009 10:52:31 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/secure-data-storage/secure-data-storage.js Wed Apr 08 10:52:31 2009 -0700 @@ -0,0 +1,77 @@ +Components.utils.import("resource://ubiquity/modules/ubiquity_protocol.js"); + +var loginManager = Cc["@mozilla.org/login-manager;1"] + .getService(Ci.nsILoginManager); +var path = 'secure-data-storage'; +var hostname = 'ubiquity://' + path; +var realm = 'Secure Data Storage'; +var formSubmitURL = null; +var username = ''; +var usernameField = ""; +var passwordField = ""; + +setPath(path, + ("data:text/html," + + "<html><head><title>Your Secure Data</title></head>" + + "<body></body></html>")); + +function pageLoad_path(doc) { + if (doc.location.href == hostname) { + var pass = getPass(); + if (!pass || pass == "\n") + pass = ("Click here to edit your secure data. " + + "It will automatically be saved when you close " + + "this page."); + var stuff = jQuery("<pre></pre>", doc).text(pass); + stuff.attr("contentEditable", "true"); + doc.defaultView.addEventListener( + "unload", + function() { + jQuery("br", stuff).replaceWith('\n'); + setPass(stuff.text()); + }, + true + ); + jQuery(doc.body).hide().append(stuff).fadeIn(); + } +} + +CmdUtils.CreateCommand( + {name: "my-secure-data", + previewUrl: "index.html", + preview: function(pblock) { + jQuery(pblock).addClass("ubiquity-preview-content"); + }, + execute: function() { + Utils.focusUrlInBrowser(hostname); + }} +); + +function getPass() { + var result = loginManager.findLogins({}, hostname, formSubmitURL, realm); + if (result.length) + return result[0].password; + return ""; +} + +function setPass(password) { + var result = loginManager.findLogins({}, hostname, formSubmitURL, realm); + + var nsLoginInfo = new Components.Constructor( + "@mozilla.org/login-manager/loginInfo;1", + Ci.nsILoginInfo, + "init" + ); + + var extLoginInfo = new nsLoginInfo(hostname, + formSubmitURL, realm, + username, password, usernameField, + passwordField); + + if (result.length) { + if (result[0].password != password) + loginManager.modifyLogin(result[0], extLoginInfo); + } else { + loginManager.addLogin(extLoginInfo); + } +}