1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-17 08:43:33 +00:00

Added autofill support for iframed login forms. #20

This commit is contained in:
Kyle Spearrin
2016-11-25 22:01:46 -05:00
parent 3f7f8b781c
commit 2b2794dd7e
5 changed files with 100 additions and 33 deletions

View File

@@ -5,7 +5,7 @@ angular
$analytics, i18nService) {
$scope.i18n = i18nService;
var pageDetails = null,
var pageDetails = [],
tabId = null,
url = null,
domain = null,
@@ -32,8 +32,7 @@ angular
return;
}
chrome.tabs.sendMessage(tabId, { command: 'collectPageDetails' }, function (details) {
pageDetails = details;
chrome.tabs.sendMessage(tabId, { command: 'collectPageDetails', tabId: tabId }, function () {
canAutofill = true;
});
@@ -71,21 +70,31 @@ angular
};
$scope.fillSite = function (site) {
var fillScript = null;
if (site && canAutofill && pageDetails) {
fillScript = autofillService.generateFillScript(pageDetails, site.username, site.password);
var didAutofill = false;
if (site && canAutofill && pageDetails && pageDetails.length) {
for (var i = 0; i < pageDetails.length; i++) {
if (pageDetails[i].tabId != tabId) {
continue;
}
var fillScript = autofillService.generateFillScript(pageDetails[i].details, site.username, site.password);
if (tabId && fillScript && fillScript.script && fillScript.script.length) {
didAutofill = true;
$analytics.eventTrack('Autofilled');
chrome.tabs.sendMessage(tabId, {
command: 'fillForm',
fillScript: fillScript
}, {
frameId: pageDetails[i].frameId
}, function () {
$window.close();
});
}
}
}
if (tabId && fillScript && fillScript.script && fillScript.script.length) {
$analytics.eventTrack('Autofilled');
chrome.tabs.sendMessage(tabId, {
command: 'fillForm',
fillScript: fillScript
}, function () {
$window.close();
});
}
else {
if (!didAutofill) {
$analytics.eventTrack('Autofilled Error');
toastr.error(i18nService.autofillError);
}
@@ -106,4 +115,8 @@ angular
setTimeout(loadVault, 500);
}
});
$scope.$on('collectPageDetailsResponse', function (event, details) {
pageDetails.push(details);
});
});

View File

@@ -29,5 +29,12 @@ angular
$state.go('home');
});
}
else if (msg.command === 'collectPageDetailsResponse') {
$scope.$broadcast('collectPageDetailsResponse', {
frameId: sender.frameId,
tabId: msg.tabId,
details: msg.details
});
}
});
});