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,16 +10,33 @@ 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);
return { return {
init : function() { init: function () {
var appcontent = document.getElementById("appcontent"); // browser var appcontent = document.getElementById("appcontent"); // browser
if (appcontent) { if (appcontent) {
appcontent.addEventListener("DOMContentLoaded", firerecord.run, appcontent.addEventListener("DOMContentLoaded", firerecord.run,
@ -30,21 +46,21 @@ var firerecord = function () {
/* /*
@author Rylan @author Rylan
*/ */
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();
} }
}, },
openfile : function() { openfile: function () {
path = io.openPath(); path = io.openPath();
}, },
newfile : function() { newfile: function () {
path = io.newPath(); path = io.newPath();
io.createFile(path); io.createFile(path);
}, },
@ -52,53 +68,63 @@ var firerecord = function () {
/* /*
@author Rylan @author Rylan
*/ */
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.
}, },
/* /*
@author Rylan, David @author Rylan, David
*/ */
playback : function() { playback: function () {
i = 0; i = 0;
playThis = io.getScript(path); playThis = io.getScript(path);
line1 = playThis[0]; line1 = playThis[0];
line2 = playThis[0+1].split(' :: '); debug("Line 1 == " + line1);
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]);
for ( var n = 0; n < all.length; n++) { for (var n = 0; n < all.length; n++) {
var elem = all[n]; var elem = all[n];
var searchCount = 0; var searchCount = 0;
if(line2[0]=="click") if (line2[0] == "click")
searchCount = 2; searchCount = 2;
else if(line2[0]=="type") else if (line2[0] == "type")
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;
} }
else{ else {
finding = false; finding = false;
break; break;
} }
@ -106,23 +132,23 @@ var firerecord = function () {
if (finding == true) if (finding == true)
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");
obj.initEvent("click", true, true); obj.initEvent("click", true, true);
elem.dispatchEvent(obj); elem.dispatchEvent(obj);
} }
else if(line2[0]=="type") else if (line2[0] == "type")
elem.value = line2[2]; elem.value = line2[2];
i+=2 i += 2
if(i<playThis.length){ if (i < playThis.length) {
line1 = playThis[i]; line1 = playThis[i];
line2 = playThis[i+1].split(' :: '); line2 = playThis[i + 1].split(' :: ');
setTimeout(function(){ setTimeout(function () {
firerecord.checkpage() firerecord.checkpage()
},5000); }, 3000);
} }
} }
}, },
@ -130,7 +156,7 @@ var firerecord = function () {
@author David, Peter, Rylan, Ian @author David, Peter, Rylan, Ian
@description Find all elements attributes and add a listener @description Find all elements attributes and add a listener
*/ */
run : function() { run: function () {
var head = content.document.getElementsByTagName("head")[0], style = content.document var head = content.document.getElementsByTagName("head")[0], style = content.document
.getElementById("link-target-finder-style"), all = content.document .getElementById("link-target-finder-style"), all = content.document
@ -148,20 +174,20 @@ var firerecord = function () {
if (recording2) { if (recording2) {
window.content.addEventListener("keyup", handleKey, false); window.content.addEventListener("keyup", handleKey, false);
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);
} }
else{ else {
elm.className += ((elm.className.length > 0) ? " " : "") elm.className += ((elm.className.length > 0) ? " " : "")
+ "link-target-finder-selected"; + "link-target-finder-selected";
elm.addEventListener("click", handleEvent, false); elm.addEventListener("click", handleEvent, false);
@ -186,40 +212,67 @@ 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",
var validtags = [ "A", "BUTTON", "FORM", "IMG", "INPUT", "caption", "selected", "size", "summary", "class"];
"LINK", "OPTION", "SELECT", "TABLE", "TEXTAREA" ]; var validtags = ["A", "BUTTON", "FORM", "IMG", "INPUT",
"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 {
// 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;
} }
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];
countWrite+=1; countWrite += 1;
toWrite[countWrite] = eleHolder; toWrite[countWrite] = eleHolder;
countWrite+=1; countWrite += 1;
} }
eleCount += 1; eleCount += 1;
} }
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 = [];
} }
@ -241,11 +294,11 @@ function handleType(e) {
} else if (e.srcElement) { } else if (e.srcElement) {
targ = e.srcElement; targ = e.srcElement;
} }
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,28 +306,26 @@ 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];
countWrite+=1; countWrite += 1;
toWrite[countWrite] = eleHolder; toWrite[countWrite] = eleHolder;
countWrite+=1; countWrite += 1;
} }
eleCount += 1; eleCount += 1;
} }
if(targ.value){ if (targ.value) {
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);
e.cancelBubble = true; e.cancelBubble = true;
toWrite=[]; toWrite = [];
} }
} }
} }
@ -282,7 +333,7 @@ function handleType(e) {
@author Rylan @author Rylan
@description handles key events @description handles key events
*/ */
function handleKey(e){ function handleKey(e) {
if (!e) { if (!e) {
var e = window.event; var e = window.event;
@ -292,35 +343,24 @@ 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 {
var toWrite = new Array(); var toWrite = new Array();
toWrite[0] = "key"; toWrite[0] = "key";
if(keyHit == 13){ if (keyHit == 13) {
toWrite[1] = "enter"; toWrite[1] = "enter";
} }
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);
} }
} }