Skip to content
This repository has been archived by the owner on Aug 27, 2020. It is now read-only.

Commit

Permalink
second useable alpha version
Browse files Browse the repository at this point in the history
* adds new feature: focus username or password field to fill-in
* adds new feature: shows menu with entries to select for fill-in
* removes popover related code and templates
* sets a "Update Manifest URL" in Info.plist
* updates Update.plist :D
* deactivates start.js injection, but keeps file
  • Loading branch information
mmichaa committed Oct 27, 2014
1 parent 158d401 commit bcf6bcb
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 91 deletions.
25 changes: 6 additions & 19 deletions Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,13 @@
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleShortVersionString</key>
<string>1.0.alpha1</string>
<string>1.0.alpha2</string>
<key>CFBundleVersion</key>
<string>0.8.1</string>
<string>0.8.2</string>
<key>Chrome</key>
<dict>
<key>Global Page</key>
<string>global.html</string>
<key>Popovers</key>
<array>
<dict>
<key>Filename</key>
<string>popovers/credentials.html</string>
<key>Height</key>
<string></string>
<key>Identifier</key>
<string>passafari_credentials</string>
<key>Width</key>
<string></string>
</dict>
</array>
<key>Toolbar Items</key>
<array>
<dict>
Expand All @@ -46,6 +33,8 @@
<true/>
<key>Label</key>
<string>passafari</string>
<key>Menu</key>
<string></string>
<key>Popover</key>
<string></string>
</dict>
Expand All @@ -59,10 +48,6 @@
<array>
<string>end.js</string>
</array>
<key>Start</key>
<array>
<string>start.js</string>
</array>
</dict>
</dict>
<key>Description</key>
Expand All @@ -81,6 +66,8 @@
<string>All</string>
</dict>
</dict>
<key>Update Manifest URL</key>
<string>https://raw.githubusercontent.com/mmichaa/passafari.safariextension/master/Update.plist</string>
<key>Website</key>
<string>https://github.com/mmichaa/passafari.safariextension/</string>
</dict>
Expand Down
6 changes: 3 additions & 3 deletions Update.plist
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
<key>Developer Identifier</key>
<string>897X8SYVFR</string>
<key>CFBundleVersion</key>
<string>1.0.alpha1</string>
<string>1.0.alpha2</string>
<key>CFBundleShortVersionString</key>
<string>0.8.1</string>
<string>0.8.2</string>
<key>URL</key>
<string>https://github.com/mmichaa/passafari.safariextension/releases/download/v1.0.alpha1/passafari-v1.0.alpha1.safariextz</string>
<string>https://github.com/mmichaa/passafari.safariextension/releases/download/v1.0.alpha2/passafari-v1.0.alpha2.safariextz</string>
</dict>
</array>
</dict>
Expand Down
21 changes: 14 additions & 7 deletions end.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
console.log('passafari: end.js');

var passafari_injected_end;

function passafari_injected_message_handler(event) {
var name = event.name;
var data = event.message;

console.log("passafari_injected_message_handler: " + name);

if(name === "credentials") {
if(name === "passafari_credentials") {
passafari_injected_credentials_handler(name, data);
}

return undefined;
};
}

function passafari_injected_credentials_handler(event_name, event_data) {
if(event_data.length === 1) {
Expand All @@ -37,10 +35,9 @@ function passafari_injected_credentials_handler(event_name, event_data) {
return undefined;
}

if(!passafari_injected_end && window.parent === window) {
console.log('passafari: passafari_injected_end');
if(window.parent === window) {
console.log('passafari: window.top');
safari.self.addEventListener("message", passafari_injected_message_handler, false);
passafari_injected_end = true;
}

function passafari_input_candidates() {
Expand Down Expand Up @@ -78,5 +75,15 @@ function passafari_input_candidates() {
}
}

for(var candidate_idx=0; candidate_idx < candidates.length; candidate_idx++) {
var inputs = candidates[candidate_idx];

if (inputs.username === document.activeElement || inputs.password === document.activeElement) {
console.log("passafari_input_candidates: using focused fields.")
candidates = [ inputs ];
break;
}
}

return candidates;
}
68 changes: 31 additions & 37 deletions global.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
function passafari_command_handler(event) {
console.log("passafari_command_handler: " + event.command);
if (event.command == "passafari_open") {
if (event.command === "passafari_open") {
passafari_open(event);
} else if (event.command == "passafari-associate") {
passafari_associate(event);
} else if (event.command === "passafari_select_credentials") {
passafari_select_credentials(event);
} else {
console.log(event);
}
return undefined;
};
Expand All @@ -12,26 +14,14 @@ function passafari_message_handler(event) {
console.log("passafari_message_handler: " + event.name);
if (event.name == "passafari_associate") {
passafari_associate(event);
} else {
console.log(event);
}
return undefined;
};

function passafari_popover_handler(event) {
console.log("passafari_popover_handler: " + event.target.identifier);

return undefined;
}

function passafari_validate_handler(event) {
console.log("passafari_validate_handler: " + event.command);
return undefined;
}

safari.application.addEventListener("command", passafari_command_handler, false);
safari.application.addEventListener("message", passafari_message_handler, false);
safari.application.addEventListener("popover", passafari_popover_handler, true);
safari.application.addEventListener("validate", passafari_validate_handler, true);


function passafari_open(event) {
passafari_associate();
Expand All @@ -41,7 +31,7 @@ function passafari_open(event) {
} else if (credentials.length === 1) {
passafari_notify_injected(credentials);
} else {
//passafari_display_credentials(credentials);
passafari_display_credentials(credentials);
}
});

Expand Down Expand Up @@ -69,7 +59,7 @@ function passafari_retrieve_credentials(callback) {
var tab = undefined;
var url = safari.application.activeBrowserWindow.activeTab.url;
var submiturl = undefined;
var forceCallback = function() {};
var forceCallback = false;
var triggerUnlock = true;

if(callback && url) {
Expand All @@ -80,34 +70,38 @@ function passafari_retrieve_credentials(callback) {
}

function passafari_display_credentials(credentials) {
var toolbar_item = safari.extension.toolbarItems[0];
var toolbarItem = safari.extension.toolbarItems[0];

if(!toolbar_item.popover) {
var width = 300;
var height = 400;
safari.extension.removeMenu("passafari_credentials");
var menu = safari.extension.createMenu("passafari_credentials");

var popover = safari.extension.createPopover("credentials", safari.extension.baseURI + "popovers/credentials.html", width, height);
for(var idx = 0; idx < credentials.length; idx++) {
var credential = credentials[idx];

toolbar_item.popover = popover;
menu.appendMenuItem("passafari_credentials_" + idx, credential.Login + " | " + credential.Name, "passafari_select_credentials");
}

var popover_document = toolbar_item.popover.contentWindow.document;
var ul = popover_document.getElementById("credentials-list");
ul.innerHTML = "";
toolbarItem.menu = menu;
toolbarItem.showMenu();

for(var idx = 0; idx < credentials.length; idx++) {
var credential = credentials[idx];
var li = popover_document.createElement("li");
var li_text = popover_document.createTextNode(credential.Login + ' | ' + credential.Name);
li.appendChild(li_text);
ul.appendChild(li);
}
return undefined;
}

function passafari_select_credentials(event) {
var idx = parseInt( event.target.identifier.split("_").pop() );

toolbar_item.showPopover();
passafari_retrieve_credentials(function(credentials) {
if (credentials.length === 0) {
} else if (credentials.length === 1) {
passafari_notify_injected(credentials);
} else {
passafari_notify_injected([ credentials[idx] ]);
}
});

return undefined;
}

function passafari_notify_injected(credentials) {
safari.application.activeBrowserWindow.activeTab.page.dispatchMessage("credentials", credentials);
safari.application.activeBrowserWindow.activeTab.page.dispatchMessage("passafari_credentials", credentials);
}
15 changes: 8 additions & 7 deletions javascripts/keepass.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ keepass.updateCredentials = function(callback, tab, entryId, username, password,

// is browser associated to keepass?
if(!keepass.testAssociation(tab)) {
browserAction.showDefault(null, tab);
//browserAction.showDefault(null, tab);
callback("error");
return;
}
Expand Down Expand Up @@ -102,7 +102,7 @@ keepass.retrieveCredentials = function (callback, tab, url, submiturl, forceCall

// is browser associated to keepass?
if(!keepass.testAssociation(tab, triggerUnlock)) {
browserAction.showDefault(null, tab);
//browserAction.showDefault(null, tab);
if(forceCallback) {
callback([]);
}
Expand Down Expand Up @@ -146,15 +146,16 @@ keepass.retrieveCredentials = function (callback, tab, url, submiturl, forceCall
keepass.updateLastUsed(keepass.databaseHash);
if(entries.length == 0) {
//questionmark-icon is not triggered, so we have to trigger for the normal symbol
browserAction.showDefault(null, tab);
//browserAction.showDefault(null, tab);
console.log("No credentials found for " + url + ".");
}
}
else {
console.log("RetrieveCredentials for " + url + " rejected");
console.log("Retrieve credentials for " + url + " rejected.");
}
}
else {
browserAction.showDefault(null, tab);
//browserAction.showDefault(null, tab);
}

//page.debug("keepass.retrieveCredentials() => entries.length = {1}", entries.length);
Expand All @@ -166,7 +167,7 @@ keepass.retrieveCredentials = function (callback, tab, url, submiturl, forceCall
keepass.generatePassword = function (callback, tab, forceCallback) {
// is browser associated to keepass?
if(!keepass.testAssociation(tab)) {
browserAction.showDefault(null, tab);
//browserAction.showDefault(null, tab);
if(forceCallback) {
callback([]);
}
Expand Down Expand Up @@ -217,7 +218,7 @@ keepass.generatePassword = function (callback, tab, forceCallback) {
}
}
else {
browserAction.showDefault(null, tab);
//browserAction.showDefault(null, tab);
}

callback(passwords);
Expand Down
10 changes: 0 additions & 10 deletions popovers/credentials.html

This file was deleted.

11 changes: 3 additions & 8 deletions start.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
/*
console.log('passafari: start.js');

var passafari_injected_start;
if(!passafari_injected_start && window.parent === window) {
console.log('passafari: passafari_injected_start');
passafari_injected_start = true;
}
*/
if(window.parent === window) {
console.log('passafari: window.top');
}

0 comments on commit bcf6bcb

Please sign in to comment.