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);
+  }
+}