view 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 source

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