Bug 1409040 - Add element.isElement shorthand. r=maja_zf

Introduces new element.isElement shorthand API for identifying DOM-,
SVG-, and XUL elements.

It is the equivalent of this:

	if (element.isDOMElement(el) ||
	    element.isSVGElement(el) ||
	    element.isXULElement(el)) {
	  // ...
	}

MozReview-Commit-ID: H8MDkP5bQmW

--HG--
extra : rebase_source : 6bef09999e47b178614e4bd307266b4449f39901
This commit is contained in:
Andreas Tolfsen 2017-10-17 14:53:42 +01:00
parent b23b5f643a
commit a03f21ac1c
3 changed files with 31 additions and 2 deletions

View File

@ -1049,6 +1049,22 @@ element.scrollIntoView = function(el) {
}
};
/**
* Ascertains whether <var>node</var> is a DOM-, SVG-, or XUL element.
*
* @param {*} node
* Element thought to be an <code>Element</code>,
* <code>SVGElement</code>, or <code>XULElement</code>.
*
* @return {boolean}
* True if <var>node</var> is an element, false otherwise.
*/
element.isElement = function(node) {
return element.isDOMElement(node) ||
element.isSVGElement(node) ||
element.isXULElement(node);
};
/**
* Ascertains whether <var>node</var> is a DOM element.
*

View File

@ -269,8 +269,8 @@ evaluate.toJSON = function(obj, seenEls) {
} else if (element.isCollection(obj)) {
return [...obj].map(el => evaluate.toJSON(el, seenEls));
// HTMLElement
} else if ("nodeType" in obj && obj.nodeType == obj.ELEMENT_NODE) {
// Element, SVGElement, XULElement
} else if (element.isElement(obj)) {
let uuid = seenEls.add(obj);
return element.makeWebElement(uuid);

View File

@ -115,6 +115,19 @@ add_test(function test_isSelected() {
run_next_test();
});
add_test(function test_isElement() {
ok(element.isElement(domEl));
ok(element.isElement(svgEl));
ok(element.isElement(xulEl));
ok(!element.isElement(domWin));
ok(!element.isElement(domFrame));
for (let typ of [true, 42, {}, [], undefined, null]) {
ok(!element.isElement(typ));
}
run_next_test();
});
add_test(function test_isDOMElement() {
ok(element.isDOMElement(domEl));
ok(!element.isDOMElement(svgEl));