Update firerecord.js
added jsdoc tags
This commit is contained in:
parent
2f10bef2f3
commit
47aa3228c1
@ -1,17 +1,20 @@
|
||||
/*
|
||||
@author Ian Hickey, Rylan Doherty, David Westgate, Peter Atashian
|
||||
@fileOverview The event listener, event handler, script writer, and script executer functions of firerecord
|
||||
|
||||
|
||||
*/
|
||||
var recordingx = false;
|
||||
var path = null;
|
||||
var loadx = null;
|
||||
var page = null;
|
||||
|
||||
window.addEventListener("load", function load(event) {
|
||||
window.removeEventListener("load", load, false); // remove listener, no
|
||||
// longer needed
|
||||
firerecord.init();
|
||||
}, false);
|
||||
|
||||
var firerecord = function () {
|
||||
var prefManager = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefBranch);
|
||||
var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
|
||||
return {
|
||||
init: function () {
|
||||
getBrowser().addEventListener("load", function () {
|
||||
@ -19,23 +22,19 @@ var firerecord = function() {
|
||||
});
|
||||
var appcontent = document.getElementById("appcontent"); // browser
|
||||
if (appcontent) {
|
||||
appcontent.addEventListener("DOMContentLoaded", firerecord.run,
|
||||
true);
|
||||
appcontent.addEventListener("DOMContentLoaded", firerecord.run, true);
|
||||
}
|
||||
},
|
||||
|
||||
// Rylan
|
||||
/* @author rylan
|
||||
*/
|
||||
running: function () {
|
||||
if (recordingx) {
|
||||
recordingx = false;
|
||||
alert("Stop Listen");
|
||||
openUILinkIn(window.content.location.href, "current");
|
||||
// document.location.reload();
|
||||
// closes all tabs on firefox.
|
||||
} else {
|
||||
recordingx = true;
|
||||
alert("Start Listen");
|
||||
// createFile("Initialize New Test File");
|
||||
firerecord.run();
|
||||
}
|
||||
},
|
||||
@ -46,55 +45,65 @@ var firerecord = function() {
|
||||
path = io.newPath();
|
||||
io.createFile(path);
|
||||
},
|
||||
// rylan
|
||||
/*
|
||||
* file: function(){ const nsIFilePicker =
|
||||
* Components.interfaces.nsIFilePicker;
|
||||
*
|
||||
* var fp = Components.classes["@mozilla.org/filepicker;1"]
|
||||
* .createInstance(nsIFilePicker); fp.init(window, "Dialog Title",
|
||||
* nsIFilePicker.modeOpen); fp.appendFilters(nsIFilePicker.filterAll |
|
||||
* nsIFilePicker.filterText);
|
||||
*
|
||||
* var rv = fp.show(); if (rv == nsIFilePicker.returnOK || rv ==
|
||||
* nsIFilePicker.returnReplace) { var file = fp.file; // Get the path as
|
||||
* string. Note that you usually won't // need to work with the string
|
||||
* paths. path = fp.file.path; // work with returned nsILocalFile...
|
||||
* } },
|
||||
@author rylan
|
||||
*/
|
||||
|
||||
// rylan
|
||||
checkpage: function (readloc) {
|
||||
page = window.content.location.href;
|
||||
if (page != readloc) {
|
||||
openUILinkIn(readloc, "current");
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
// rylan and David
|
||||
/*
|
||||
@author rylan, David
|
||||
*/
|
||||
playback: function () {
|
||||
var playThis = io.getLine(path);
|
||||
var wait = true;
|
||||
var playThis = io.getScript(path);
|
||||
var line1 = new Array();
|
||||
var line2 = new Array();
|
||||
for(var i = 0; i < playThis.length; i+=2)
|
||||
{
|
||||
for (var i = 0; i < playThis.length; i += 2) {
|
||||
line1 = playThis[i];
|
||||
line2 = playThis[i + 1].split(' :: ');
|
||||
|
||||
//alert(line1.toString());
|
||||
//alert(line2.toString());
|
||||
setTimeout(function() {
|
||||
while (true) {
|
||||
if (document.readyState == "complete") {
|
||||
firerecord.checkpage(line1);
|
||||
}, 5000);
|
||||
setTimeout(function() {
|
||||
firerecord.fire(line2[0], line2[1], line2[2], line2[3], line2[4]);
|
||||
}, 8000);
|
||||
// setTimeout(function(){firerecord.fireExp();},8000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// rylan
|
||||
setTimeout(function () {
|
||||
this.wait = false
|
||||
}, 1000);
|
||||
while (true) {
|
||||
alert(wait);
|
||||
if(wait == false)
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
wait = true;
|
||||
while (true) {
|
||||
if (document.readyState == "complete") {
|
||||
firerecord.fire(line2[0], line2[1], line2[2], line2[3], line2[4]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
setTimeout(function () {
|
||||
wait = false;
|
||||
}, 1000);
|
||||
while (true) {
|
||||
if(wait == false)
|
||||
break;
|
||||
}
|
||||
wait = true;
|
||||
}
|
||||
|
||||
},
|
||||
/*
|
||||
@author rylan
|
||||
*/
|
||||
nullCheck: function (elem) {
|
||||
if (!elem.href) {
|
||||
elem.href = "null";
|
||||
@ -141,50 +150,35 @@ var firerecord = function() {
|
||||
if (!elem.caption) {
|
||||
elem.caption = "null";
|
||||
}
|
||||
|
||||
return elem;
|
||||
},
|
||||
|
||||
/*
|
||||
*
|
||||
* //rylan fireExp: function(){ var all =
|
||||
* content.document.getElementsByTagName("A"); for (var i = 0; i <
|
||||
* all.length; ++i) { var elem = all[i]; if (i==62){ var obj =
|
||||
* document.createEvent("MouseEvents"); obj.initEvent("click", true,
|
||||
* true); elem.dispatchEvent(obj); } } },
|
||||
@author rylan
|
||||
*/
|
||||
|
||||
// rylan
|
||||
fire: function (b, c, d, e, f) {
|
||||
|
||||
var all = content.document.getElementsByTagName(b);
|
||||
for (var i = 0; i < all.length; ++i) {
|
||||
var elem = all[i];
|
||||
elem = firerecord.nullCheck(elem);
|
||||
switch (elem.tagName) {
|
||||
// All of these cases need null checks for each attribute.
|
||||
|
||||
case "A":
|
||||
|
||||
if (elem.href == c) {
|
||||
var obj = document.createEvent("MouseEvents");
|
||||
obj.initEvent("click", true, true);
|
||||
elem.dispatchEvent(obj);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case "BUTTON":
|
||||
if (elem.name == c && elem.type == d && elem.value == e
|
||||
&& elem.form == f) {
|
||||
if (elem.name == c && elem.type == d && elem.value == e && elem.form == f) {
|
||||
var obj = document.createEvent("MouseEvents");
|
||||
obj.initEvent("click", true, true);
|
||||
elem.dispatchEvent(obj);
|
||||
}
|
||||
break;
|
||||
case "FORM":
|
||||
if (elem.name == c && elem.length == d && elem.target == e
|
||||
&& elem.action == f) {
|
||||
if (elem.name == c && elem.length == d && elem.target == e && elem.action == f) {
|
||||
var obj = document.createEvent("MouseEvents");
|
||||
obj.initEvent("click", true, true);
|
||||
elem.dispatchEvent(obj);
|
||||
@ -239,23 +233,22 @@ var firerecord = function() {
|
||||
elem.dispatchEvent(obj);
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
/*
|
||||
@author David, Peter, rylan, Ian
|
||||
|
||||
@description Find all elements attributes and add a listener
|
||||
*/
|
||||
run: function () {
|
||||
|
||||
var head = content.document.getElementsByTagName("head")[0], style = content.document
|
||||
.getElementById("link-target-finder-style"), all = content.document
|
||||
.getElementsByTagName("*"), foundElements = 0;
|
||||
|
||||
var head = content.document.getElementsByTagName("head")[0],
|
||||
style = content.document.getElementById("link-target-finder-style"),
|
||||
all = content.document.getElementsByTagName("*"),
|
||||
foundElements = 0;
|
||||
var info = new Array(); // Made this global
|
||||
var Recording = true; // Just need this until we finish with the
|
||||
// the buttons.
|
||||
|
||||
if (!style) {
|
||||
style = content.document.createElement("link");
|
||||
style.id = "link-target-finder-style";
|
||||
@ -265,52 +258,36 @@ var firerecord = function() {
|
||||
head.appendChild(style);
|
||||
}
|
||||
|
||||
// Find all elements attributes and add a listener
|
||||
//David, Peter
|
||||
for (var i = 0; i < all.length; ++i) {
|
||||
// Define the classname variable
|
||||
elm = all[i];
|
||||
// deleted local call to new array info
|
||||
var validtags = [ "A", "BUTTON", "FORM", "IMG", "INPUT",
|
||||
"LINK", "OPTION", "SELECT", "TABLE", "TEXTAREA" ];
|
||||
var validtags = ["A", "BUTTON", "FORM", "IMG", "INPUT", "LINK", "OPTION", "SELECT", "TABLE", "TEXTAREA"];
|
||||
// Add a click event listener to all the valid tags.
|
||||
if (validtags.indexOf(all[i].tagName) < 0)
|
||||
continue;
|
||||
|
||||
if (validtags.indexOf(all[i].tagName) < 0) continue;
|
||||
info[0] = all[i].tagName;
|
||||
|
||||
// Feel free to change this to a for each...
|
||||
if (recordingx) {
|
||||
switch (info[0]) {
|
||||
// All of these cases need null checks for each attribute.
|
||||
case "INPUT":
|
||||
|
||||
elm.className += ((elm.className.length > 0) ? " " : "")
|
||||
+ "link-target-finder-selected";
|
||||
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected";
|
||||
elm.addEventListener("keyup", handleType, false);
|
||||
break;
|
||||
case "A":
|
||||
|
||||
elm.className += ((elm.className.length > 0) ? " " : "")
|
||||
+ "link-target-finder-selected";
|
||||
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected";
|
||||
elm.addEventListener("click", handleEvent, false);
|
||||
break;
|
||||
case "BUTTON":
|
||||
|
||||
elm.className += ((elm.className.length > 0) ? " " : "")
|
||||
+ "link-target-finder-selected";
|
||||
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected";
|
||||
elm.addEventListener("click", handleEvent, false);
|
||||
break;
|
||||
case "FORM":
|
||||
|
||||
elm.className += ((elm.className.length > 0) ? " " : "")
|
||||
+ "link-target-finder-selected";
|
||||
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected";
|
||||
elm.addEventListener("click", handleEvent, false);
|
||||
break;
|
||||
case "IMG":
|
||||
|
||||
elm.className += ((elm.className.length > 0) ? " " : "")
|
||||
+ "link-target-finder-selected";
|
||||
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected";
|
||||
elm.addEventListener("click", handleEvent, false);
|
||||
break;
|
||||
/*
|
||||
@ -321,45 +298,35 @@ var firerecord = function() {
|
||||
* elm.addEventListener("click", handleEvent, false); break;
|
||||
*/
|
||||
case "LINK":
|
||||
|
||||
elm.className += ((elm.className.length > 0) ? " " : "")
|
||||
+ "link-target-finder-selected";
|
||||
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected";
|
||||
elm.addEventListener("click", handleEvent, false);
|
||||
break;
|
||||
case "OPTION":
|
||||
|
||||
elm.className += ((elm.className.length > 0) ? " " : "")
|
||||
+ "link-target-finder-selected";
|
||||
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected";
|
||||
elm.addEventListener("click", handleEvent, false);
|
||||
break;
|
||||
case "SELECT":
|
||||
elm.className += ((elm.className.length > 0) ? " " : "")
|
||||
+ "link-target-finder-selected";
|
||||
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected";
|
||||
elm.addEventListener("click", handleEvent, false);
|
||||
break;
|
||||
case "TABLE":
|
||||
|
||||
elm.className += ((elm.className.length > 0) ? " " : "")
|
||||
+ "link-target-finder-selected";
|
||||
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected";
|
||||
elm.addEventListener("click", handleEvent, false);
|
||||
break;
|
||||
case "TEXTAREA":
|
||||
elm.className += ((elm.className.length > 0) ? " " : "")
|
||||
+ "link-target-finder-selected";
|
||||
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected";
|
||||
elm.addEventListener("click", handleEvent, false);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// rylan
|
||||
/*
|
||||
@author rylan
|
||||
@description handles events
|
||||
*/
|
||||
function handleEvent(e) {
|
||||
var targ;
|
||||
if (!e) {
|
||||
@ -371,7 +338,6 @@ var firerecord = function() {
|
||||
targ = e.srcElement;
|
||||
}
|
||||
var taginfo = new Array();
|
||||
|
||||
taginfo[0] = targ.tagName;
|
||||
var countr;
|
||||
// Feel free to change this to a for each...
|
||||
@ -379,26 +345,22 @@ var firerecord = function() {
|
||||
// All of these cases need null checks for each attribute.
|
||||
case "A":
|
||||
taginfo[1] = targ.href;
|
||||
|
||||
break;
|
||||
case "BUTTON":
|
||||
taginfo[1] = targ.name;
|
||||
taginfo[2] = targ.type;
|
||||
taginfo[3] = targ.value;
|
||||
taginfo[4] = targ.form;
|
||||
|
||||
break;
|
||||
case "FORM":
|
||||
taginfo[1] = targ.name;
|
||||
taginfo[2] = targ.length;
|
||||
taginfo[3] = targ.target;
|
||||
taginfo[4] = targ.action;
|
||||
|
||||
break;
|
||||
case "IMG":
|
||||
taginfo[1] = targ.name;
|
||||
taginfo[2] = targ.src;
|
||||
|
||||
break;
|
||||
/*
|
||||
* case "INPUT": taginfo[1] = targ.name; taginfo[2] = targ.type;
|
||||
@ -410,30 +372,25 @@ var firerecord = function() {
|
||||
taginfo[1] = targ.href;
|
||||
taginfo[2] = targ.type;
|
||||
taginfo[3] = targ.charset;
|
||||
|
||||
break;
|
||||
case "OPTION":
|
||||
taginfo[1] = targ.text;
|
||||
taginfo[2] = targ.value;
|
||||
taginfo[3] = targ.index;
|
||||
|
||||
break;
|
||||
case "SELECT":
|
||||
taginfo[1] = targ.type;
|
||||
taginfo[2] = targ.name;
|
||||
taginfo[3] = targ.size;
|
||||
|
||||
break;
|
||||
case "TABLE":
|
||||
taginfo[1] = targ.summary;
|
||||
taginfo[2] = targ.caption;
|
||||
|
||||
break;
|
||||
case "TEXTAREA":
|
||||
taginfo[1] = targ.name;
|
||||
taginfo[2] = targ.type;
|
||||
taginfo[3] = targ.value;
|
||||
|
||||
break;
|
||||
}
|
||||
if (!taginfo[1]) {
|
||||
@ -448,21 +405,16 @@ var firerecord = function() {
|
||||
if (!taginfo[4]) {
|
||||
taginfo[4] = "null";
|
||||
}
|
||||
/*
|
||||
* var positionFind = content.document.getElementsByTagName(taginfo[0]);
|
||||
* for (var i = 0; i < positionFind.length; ++i) { if (targ =
|
||||
* positionFind[i]){ taginfo[5] = i;
|
||||
* } } alert(taginfo[5]);
|
||||
*/
|
||||
var contents = taginfo.join(' :: ') + "\n";
|
||||
io.appendPath(path, window.content.location.href + "\n");
|
||||
io.appendPath(path, contents);
|
||||
e.cancelBubble = true;
|
||||
}
|
||||
;
|
||||
|
||||
};
|
||||
}();
|
||||
|
||||
/*
|
||||
@author Ian
|
||||
@description handles types
|
||||
*/
|
||||
function handleType(e) {
|
||||
var targ;
|
||||
if (!e) {
|
||||
|
Reference in New Issue
Block a user