Update Several Files

This commit is contained in:
Rylan doherty 2013-05-07 11:18:55 -04:00
parent de6bf545fd
commit 338bc3ed29

View File

@ -2,7 +2,6 @@
@author Ian Hickey, Rylan Doherty, David Westgate, William Jellesma, Peter Atashian @author Ian Hickey, Rylan Doherty, David Westgate, William Jellesma, Peter Atashian
@fileOverview The event listener, event handler, script writer, and script executer functions of firerecord @fileOverview The event listener, event handler, script writer, and script executer functions of firerecord
*/ */
var recording2 = false; var recording2 = false;
var path = null; var path = null;
@ -11,11 +10,28 @@ var i = 0;
var line1 = new Array(); var line1 = new Array();
var line2 = new Array(); var line2 = new Array();
var playThis; var playThis;
var debugging = 0; //Turn on debugging by setting this to 1.
var lastPage = "";
/*
* debug handles displaying popups for additional info
* needed for debugging purposes.
* @arg debug string to display to in debug mode.
*/
var debug = function (debugString) {
if (this.debugging == 1) { alert(debugString) }
else { return 1; }
};
/*
* Handles calling the init function on each page load.
*/
window.addEventListener("load", function load(event) { window.addEventListener("load", function load(event) {
window.removeEventListener("load", load, false); window.removeEventListener("load", load, false);
firerecord.init(); firerecord.init();
}, false); }, false);
/*
* Init checks that the dom is loaded an ready before calling run()
*/
var firerecord = function () { var firerecord = function () {
var prefManager = Components.classes["@mozilla.org/preferences-service;1"] var prefManager = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch); .getService(Components.interfaces.nsIPrefBranch);
@ -33,11 +49,11 @@ var firerecord = function () {
running: function () { running: function () {
if (recording2) { if (recording2) {
recording2 = false; recording2 = false;
alert("Stop Listen"); alert("Recording Completed.");
openUILinkIn(window.content.location.href, "current"); openUILinkIn(window.content.location.href, "current");
} else { } else {
recording2 = true; recording2 = true;
alert("Start Listen"); alert("Recording On.");
firerecord.run(); firerecord.run();
} }
}, },
@ -54,12 +70,15 @@ var firerecord = function () {
*/ */
checkpage: function () { checkpage: function () {
page = window.content.location.href; page = window.content.location.href;
if (page != line1) if (page == lastPage) {
//do nothing
}
else if (page != line1) {
openUILinkIn(line1, "current"); openUILinkIn(line1, "current");
}
setTimeout(function () { setTimeout(function () {
firerecord.fire(); firerecord.fire();
},5000); }, 3000);//Change timeout to 3 seconds.
}, },
/* /*
@ -69,18 +88,26 @@ var firerecord = function () {
i = 0; i = 0;
playThis = io.getScript(path); playThis = io.getScript(path);
line1 = playThis[0]; line1 = playThis[0];
debug("Line 1 == " + line1);
line2 = playThis[0 + 1].split(' :: '); line2 = playThis[0 + 1].split(' :: ');
debug("Line 2 == " + line2);
//Keep a copy of the last address so we don't refresh the page in the middle of trying to login to a site etc.
lastPage = line1;
firerecord.checkpage(); firerecord.checkpage();
}, },
/* /*
@author Rylan * This function
*@author Rylan
*/ */
fire: function () { fire: function () {
if (line2[0] == "key") { if (line2[0] == "key") {
debug("Line2 does == [key]");
var obj = document.createEvent("KeyboardEvent"); var obj = document.createEvent("KeyboardEvent");
obj.initKeyEvent('keydown', true, true, window, false, false, false, false, 8, 0); obj.initKeyEvent('keypress', true, true, window, false, false, false, false, 8, 0);
document.dispatchEvent(obj); var keyResult = document.dispatchEvent(obj);
debug(keyResult); //Display true or false depending on if another obj has overriden and canceled this event.
} }
else { else {
var all = content.document.getElementsByTagName(line2[1]); var all = content.document.getElementsByTagName(line2[1]);
@ -93,8 +120,7 @@ var firerecord = function () {
searchCount = 3; searchCount = 3;
var finding = false; var finding = false;
while (searchCount < line2.length) { while (searchCount < line2.length) {
if(elem[line2[searchCount]]==line2[searchCount+1]) if (elem[line2[searchCount]] == line2[searchCount + 1]) {
{
finding = true; finding = true;
searchCount += 2; searchCount += 2;
} }
@ -107,7 +133,7 @@ var firerecord = function () {
break; break;
} }
if (finding == false) { if (finding == false) {
alert("Matching Element Not Found!"); debug("Matching Element Not Found!");
} }
else if (line2[0] == "click") { else if (line2[0] == "click") {
var obj = document.createEvent("MouseEvents"); var obj = document.createEvent("MouseEvents");
@ -122,7 +148,7 @@ var firerecord = function () {
line2 = playThis[i + 1].split(' :: '); line2 = playThis[i + 1].split(' :: ');
setTimeout(function () { setTimeout(function () {
firerecord.checkpage() firerecord.checkpage()
},5000); }, 3000);
} }
} }
}, },
@ -151,12 +177,12 @@ var firerecord = function () {
for (var i = 0; i < all.length; ++i) { for (var i = 0; i < all.length; ++i) {
elm = all[i]; elm = all[i];
var validtags = ["A", "BUTTON", "FORM", "IMG", "INPUT", var validtags = ["A", "BUTTON", "FORM", "IMG", "INPUT",
"LINK", "OPTION", "SELECT", "TABLE", "TEXTAREA" ]; "LINK", "OPTION", "SELECT", "SPAN", "TABLE", "TEXTAREA"];
info[0] = all[i].tagName; info[0] = all[i].tagName;
if (validtags.indexOf(info[0]) == -1) if (validtags.indexOf(info[0]) == -1)
continue; continue;
else { else {
if ( (elm.type == "text"||elm.type =="password") && info[0] == "INPUT"){ if ((elm.type == "text" || elm.type == "password") && info[0] == "INPUT" || elm.type == "submit" || elm.type == "email") {
elm.className += ((elm.className.length > 0) ? " " : "") elm.className += ((elm.className.length > 0) ? " " : "")
+ "link-target-finder-selected"; + "link-target-finder-selected";
elm.addEventListener("change", handleType, false); elm.addEventListener("change", handleType, false);
@ -186,26 +212,51 @@ var firerecord = function () {
} else if (e.srcElement) { } else if (e.srcElement) {
targ = e.srcElement; targ = e.srcElement;
} }
var eleArray= ["href","name","id","type","value","form","length", var eleArray = ["href", "name", "id", "type", "value",
"target","action","src","charset","text","index", "form", "length", "target", "action",
"caption","size","summary"]; "src", "charset", "text", "index",
"caption", "selected", "size", "summary", "class"];
var validtags = ["A", "BUTTON", "FORM", "IMG", "INPUT", var validtags = ["A", "BUTTON", "FORM", "IMG", "INPUT",
"LINK", "OPTION", "SELECT", "TABLE", "TEXTAREA" ]; "LINK", "OPTION", "SELECT", "SPAN", "TABLE", "EM", "TEXTAREA"];
var toWrite = new Array(); var toWrite = new Array();
toWrite[0] = "click"; toWrite[0] = "click";
toWrite[1] = targ.tagName; toWrite[1] = targ.tagName;
var countWrite = 2; var countWrite = 2;
var eleCount = 0; var eleCount = 0;
var eleHolder; var eleHolder;
if (validtags.indexOf(toWrite[1]) == -1)
{
if (validtags.indexOf(toWrite[1]) == -1) {
debug("No valid tags.");
} }
else { else {
while(eleCount<eleArray.length)
{ // If we are dealing with a span and can't find the href
// we need to look at the parent and get the link...
// Need to add img to this as well if the image has no href of its own...
if (toWrite[1] == "SPAN" || toWrite[1] == "EM") {
//Find parent.
debug("Finding Parent");
var targP = targ.parentElement;
//Loop through parents...
try {
if (targP.tagName != "A") {
//Try a second time...
targP = targP.parentElement;
}
} catch (e) {
debug("Couldn't find and parent with a link: " + e);
}
var targPtag = targP.tagName;
debug("Found " + targPtag);
toWrite[1] = targPtag;
targ = targP;
}
while (eleCount < eleArray.length) {
eleHolder = targ[eleArray[eleCount]]; eleHolder = targ[eleArray[eleCount]];
if (eleHolder) { if (eleHolder) {
toWrite[countWrite] = eleArray[eleCount]; toWrite[countWrite] = eleArray[eleCount];
countWrite += 1; countWrite += 1;
@ -217,7 +268,9 @@ var firerecord = function () {
var contents = toWrite.join(' :: ') + "\n"; var contents = toWrite.join(' :: ') + "\n";
io.appendPath(path, window.content.location.href + "\n"); io.appendPath(path, window.content.location.href + "\n");
debug(window.content.location.href + "\n");
io.appendPath(path, contents); io.appendPath(path, contents);
debug(contents);
e.cancelBubble = true; e.cancelBubble = true;
toWrite = []; toWrite = [];
} }
@ -243,9 +296,9 @@ function handleType(e) {
} }
var eleArray = ["href", "name", "id", "type", "form", "length", var eleArray = ["href", "name", "id", "type", "form", "length",
"target", "action", "src", "charset", "text", "index", "target", "action", "src", "charset", "text", "index",
"caption","size","summary"]; "caption", "selected", "size", "summary", "class"];
var validtags = ["A", "BUTTON", "FORM", "IMG", "INPUT", var validtags = ["A", "BUTTON", "FORM", "IMG", "INPUT",
"LINK", "OPTION", "SELECT", "TABLE", "TEXTAREA" ]; "LINK", "OPTION", "SELECT", "SPAN", "TABLE", "TEXTAREA"];
var toWrite = new Array(); var toWrite = new Array();
toWrite[0] = "type"; toWrite[0] = "type";
toWrite[1] = targ.tagName; toWrite[1] = targ.tagName;
@ -253,13 +306,11 @@ function handleType(e) {
var countWrite = 3; var countWrite = 3;
var eleCount = 0; var eleCount = 0;
var eleHolder; var eleHolder;
if (validtags.indexOf(toWrite[1]) == -1) if (validtags.indexOf(toWrite[1]) == -1) {
{
} }
else { else {
while(eleCount<eleArray.length) while (eleCount < eleArray.length) {
{
eleHolder = targ[eleArray[eleCount]]; eleHolder = targ[eleArray[eleCount]];
if (eleHolder) { if (eleHolder) {
toWrite[countWrite] = eleArray[eleCount]; toWrite[countWrite] = eleArray[eleCount];
@ -292,10 +343,9 @@ function handleKey(e){
} else if (e.srcElement) { } else if (e.srcElement) {
targ = e.srcElement; targ = e.srcElement;
} }
var validkeys = [13,9,32,27,8]; var validkeys = [13, 9];
var keyHit = e ? e.which : window.event.keyCode; var keyHit = e ? e.which : window.event.keyCode;
if (validkeys.indexOf(keyHit) == -1) if (validkeys.indexOf(keyHit) == -1) {
{
} }
else { else {
@ -309,16 +359,6 @@ function handleKey(e){
else if (keyHit == 9) { else if (keyHit == 9) {
toWrite[1] = "tab"; toWrite[1] = "tab";
} }
else if(keyHit == 32){
toWrite[1] = "space";
}
else if(keyHit === 27){
toWrite[1] = "esc";
}
else if(keyHit == 8){
toWrite[1] = "backspace";
}
var contents = toWrite.join(' :: ') + "\n"; var contents = toWrite.join(' :: ') + "\n";
io.appendPath(path, window.content.location.href + "\n"); io.appendPath(path, window.content.location.href + "\n");
io.appendPath(path, contents); io.appendPath(path, contents);