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
@fileOverview The event listener, event handler, script writer, and script executer functions of firerecord
*/
var recording2 = false;
var path = null;
@ -11,16 +10,33 @@ var i = 0;
var line1 = new Array();
var line2 = new Array();
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.removeEventListener("load", load, false);
firerecord.init();
}, false);
/*
* Init checks that the dom is loaded an ready before calling run()
*/
var firerecord = function () {
var prefManager = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
return {
init : function() {
init: function () {
var appcontent = document.getElementById("appcontent"); // browser
if (appcontent) {
appcontent.addEventListener("DOMContentLoaded", firerecord.run,
@ -30,21 +46,21 @@ var firerecord = function () {
/*
@author Rylan
*/
running : function() {
running: function () {
if (recording2) {
recording2 = false;
alert("Stop Listen");
alert("Recording Completed.");
openUILinkIn(window.content.location.href, "current");
} else {
recording2 = true;
alert("Start Listen");
alert("Recording On.");
firerecord.run();
}
},
openfile : function() {
openfile: function () {
path = io.openPath();
},
newfile : function() {
newfile: function () {
path = io.newPath();
io.createFile(path);
},
@ -52,53 +68,63 @@ var firerecord = function () {
/*
@author Rylan
*/
checkpage : function() {
checkpage: function () {
page = window.content.location.href;
if (page != line1)
if (page == lastPage) {
//do nothing
}
else if (page != line1) {
openUILinkIn(line1, "current");
setTimeout(function(){
}
setTimeout(function () {
firerecord.fire();
},5000);
}, 3000);//Change timeout to 3 seconds.
},
/*
@author Rylan, David
*/
playback : function() {
playback: function () {
i = 0;
playThis = io.getScript(path);
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();
},
/*
@author Rylan
* This function
*@author Rylan
*/
fire : function() {
if (line2[0]=="key"){
fire: function () {
if (line2[0] == "key") {
debug("Line2 does == [key]");
var obj = document.createEvent("KeyboardEvent");
obj.initKeyEvent('keydown', true, true, window, false, false, false, false, 8, 0);
document.dispatchEvent(obj);
obj.initKeyEvent('keypress', true, true, window, false, false, false, false, 8, 0);
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]);
for ( var n = 0; n < all.length; n++) {
for (var n = 0; n < all.length; n++) {
var elem = all[n];
var searchCount = 0;
if(line2[0]=="click")
if (line2[0] == "click")
searchCount = 2;
else if(line2[0]=="type")
else if (line2[0] == "type")
searchCount = 3;
var finding = false;
while(searchCount<line2.length ){
if(elem[line2[searchCount]]==line2[searchCount+1])
{
while (searchCount < line2.length) {
if (elem[line2[searchCount]] == line2[searchCount + 1]) {
finding = true;
searchCount+=2;
searchCount += 2;
}
else{
else {
finding = false;
break;
}
@ -106,23 +132,23 @@ var firerecord = function () {
if (finding == true)
break;
}
if (finding == false){
alert("Matching Element Not Found!");
if (finding == false) {
debug("Matching Element Not Found!");
}
else if(line2[0]=="click"){
else if (line2[0] == "click") {
var obj = document.createEvent("MouseEvents");
obj.initEvent("click", true, true);
elem.dispatchEvent(obj);
}
else if(line2[0]=="type")
else if (line2[0] == "type")
elem.value = line2[2];
i+=2
if(i<playThis.length){
i += 2
if (i < playThis.length) {
line1 = playThis[i];
line2 = playThis[i+1].split(' :: ');
setTimeout(function(){
line2 = playThis[i + 1].split(' :: ');
setTimeout(function () {
firerecord.checkpage()
},5000);
}, 3000);
}
}
},
@ -130,7 +156,7 @@ var firerecord = function () {
@author David, Peter, Rylan, Ian
@description Find all elements attributes and add a listener
*/
run : function() {
run: function () {
var head = content.document.getElementsByTagName("head")[0], style = content.document
.getElementById("link-target-finder-style"), all = content.document
@ -148,20 +174,20 @@ var firerecord = function () {
if (recording2) {
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];
var validtags = [ "A", "BUTTON", "FORM", "IMG", "INPUT",
"LINK", "OPTION", "SELECT", "TABLE", "TEXTAREA" ];
var validtags = ["A", "BUTTON", "FORM", "IMG", "INPUT",
"LINK", "OPTION", "SELECT", "SPAN", "TABLE", "TEXTAREA"];
info[0] = all[i].tagName;
if (validtags.indexOf(info[0]) == -1)
continue;
else{
if ( (elm.type == "text"||elm.type =="password") && info[0] == "INPUT"){
else {
if ((elm.type == "text" || elm.type == "password") && info[0] == "INPUT" || elm.type == "submit" || elm.type == "email") {
elm.className += ((elm.className.length > 0) ? " " : "")
+ "link-target-finder-selected";
elm.addEventListener("change", handleType, false);
}
else{
else {
elm.className += ((elm.className.length > 0) ? " " : "")
+ "link-target-finder-selected";
elm.addEventListener("click", handleEvent, false);
@ -186,40 +212,67 @@ var firerecord = function () {
} else if (e.srcElement) {
targ = e.srcElement;
}
var eleArray= ["href","name","id","type","value","form","length",
"target","action","src","charset","text","index",
"caption","size","summary"];
var validtags = [ "A", "BUTTON", "FORM", "IMG", "INPUT",
"LINK", "OPTION", "SELECT", "TABLE", "TEXTAREA" ];
var eleArray = ["href", "name", "id", "type", "value",
"form", "length", "target", "action",
"src", "charset", "text", "index",
"caption", "selected", "size", "summary", "class"];
var validtags = ["A", "BUTTON", "FORM", "IMG", "INPUT",
"LINK", "OPTION", "SELECT", "SPAN", "TABLE", "EM", "TEXTAREA"];
var toWrite = new Array();
toWrite[0] = "click";
toWrite[1] = targ.tagName;
var countWrite = 2;
var eleCount = 0;
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]];
if(eleHolder){
if (eleHolder) {
toWrite[countWrite] = eleArray[eleCount];
countWrite+=1;
countWrite += 1;
toWrite[countWrite] = eleHolder;
countWrite+=1;
countWrite += 1;
}
eleCount += 1;
}
var contents = toWrite.join(' :: ') + "\n";
io.appendPath(path, window.content.location.href + "\n");
debug(window.content.location.href + "\n");
io.appendPath(path, contents);
debug(contents);
e.cancelBubble = true;
toWrite=[];
toWrite = [];
}
@ -241,11 +294,11 @@ function handleType(e) {
} else if (e.srcElement) {
targ = e.srcElement;
}
var eleArray= ["href","name","id","type","form","length",
"target","action","src","charset","text","index",
"caption","size","summary"];
var validtags = [ "A", "BUTTON", "FORM", "IMG", "INPUT",
"LINK", "OPTION", "SELECT", "TABLE", "TEXTAREA" ];
var eleArray = ["href", "name", "id", "type", "form", "length",
"target", "action", "src", "charset", "text", "index",
"caption", "selected", "size", "summary", "class"];
var validtags = ["A", "BUTTON", "FORM", "IMG", "INPUT",
"LINK", "OPTION", "SELECT", "SPAN", "TABLE", "TEXTAREA"];
var toWrite = new Array();
toWrite[0] = "type";
toWrite[1] = targ.tagName;
@ -253,28 +306,26 @@ function handleType(e) {
var countWrite = 3;
var eleCount = 0;
var eleHolder;
if (validtags.indexOf(toWrite[1]) == -1)
{
if (validtags.indexOf(toWrite[1]) == -1) {
}
else{
while(eleCount<eleArray.length)
{
else {
while (eleCount < eleArray.length) {
eleHolder = targ[eleArray[eleCount]];
if(eleHolder){
if (eleHolder) {
toWrite[countWrite] = eleArray[eleCount];
countWrite+=1;
countWrite += 1;
toWrite[countWrite] = eleHolder;
countWrite+=1;
countWrite += 1;
}
eleCount += 1;
}
if(targ.value){
if (targ.value) {
var contents = toWrite.join(' :: ') + "\n";
io.appendPath(path, window.content.location.href + "\n");
io.appendPath(path, contents);
e.cancelBubble = true;
toWrite=[];
toWrite = [];
}
}
}
@ -282,7 +333,7 @@ function handleType(e) {
@author Rylan
@description handles key events
*/
function handleKey(e){
function handleKey(e) {
if (!e) {
var e = window.event;
@ -292,35 +343,24 @@ function handleKey(e){
} else if (e.srcElement) {
targ = e.srcElement;
}
var validkeys = [13,9,32,27,8];
var keyHit = e? e.which: window.event.keyCode;
if (validkeys.indexOf(keyHit) == -1)
{
var validkeys = [13, 9];
var keyHit = e ? e.which : window.event.keyCode;
if (validkeys.indexOf(keyHit) == -1) {
}
else{
else {
var toWrite = new Array();
toWrite[0] = "key";
if(keyHit == 13){
if (keyHit == 13) {
toWrite[1] = "enter";
}
else if(keyHit == 9){
else if (keyHit == 9) {
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";
io.appendPath(path, window.content.location.href + "\n");
io.appendPath(path, contents);
}
}
}