Convert feed processor type checks away from XPCOM

This converts the type checks for arrays and interfaces to use native JS
approaches instead of XPCOM.
This commit is contained in:
J. Ryan Stinnett 2021-05-11 10:33:09 +01:00
parent a3e6f96289
commit a0694cd8fb

View file

@ -39,25 +39,6 @@ function isFunction(a) {
return typeof a == "function"; return typeof a == "function";
} }
function isIID(a, iid) {
var rv = false;
try {
a.QueryInterface(iid);
rv = true;
}
catch (e) {
}
return rv;
}
function isIArray(a) {
return isIID(a, Ci.nsIArray);
}
function isIFeedContainer(a) {
return isIID(a, Ci.nsIFeedContainer);
}
function stripTags(someHTML) { function stripTags(someHTML) {
return someHTML.replace(/<[^>]+>/g, ""); return someHTML.replace(/<[^>]+>/g, "");
} }
@ -1433,7 +1414,7 @@ FeedProcessor.prototype = {
// If new object is an nsIFeedContainer, we want to deal with // If new object is an nsIFeedContainer, we want to deal with
// its member nsIPropertyBag instead. // its member nsIPropertyBag instead.
if (isIFeedContainer(obj)) { if (obj.fields) {
newProp = obj.fields; newProp = obj.fields;
} }
} }
@ -1460,11 +1441,10 @@ FeedProcessor.prototype = {
var container = stateTuple[0]; var container = stateTuple[0];
var containerParent = stateTuple[2]; var containerParent = stateTuple[2];
var element = null; var element = null;
var isArray = isIArray(container);
// If it's an array and we have to post-process, // If it's an array and we have to post-process,
// grab the last element // grab the last element
if (isArray) { if (isArray(container)) {
element = container[container.length - 1]; element = container[container.length - 1];
} }
else { else {
@ -1483,7 +1463,7 @@ FeedProcessor.prototype = {
} }
// If it's an array, re-set the last element // If it's an array, re-set the last element
if (isArray) { if (isArray(container)) {
container[container.length - 1] = element; container[container.length - 1] = element;
} }
}, },
@ -1554,7 +1534,7 @@ FeedProcessor.prototype = {
var container = top[0]; var container = top[0];
// Grab the last element if it's an array // Grab the last element if it's an array
if (isIArray(container)) { if (isArray(container)) {
var contract = this._handlerStack[this._depth].containerClass; var contract = this._handlerStack[this._depth].containerClass;
// check if it's something specific, but not an entry // check if it's something specific, but not an entry
if (contract && contract != Entry) { if (contract && contract != Entry) {