Bug 1354211 - Consider <optgroup> when finding container element. r=automatedtester

It is a bug in element.getContainer that <optgroup> is not considered
when locating the containing context element, <select>.  <optgroup>
is also a child element of <select> on the same level as <option>.

MozReview-Commit-ID: 2GJJrRuY5Th

--HG--
extra : rebase_source : 2bfabe6f79bc0d6d473657ef34cded04c51857a3
This commit is contained in:
Andreas Tolfsen 2017-12-31 14:32:38 +00:00
Родитель 26be8043ca
Коммит 27edd882b6
1 изменённых файлов: 3 добавлений и 5 удалений

Просмотреть файл

@ -847,10 +847,9 @@ element.inViewport = function(el, x = undefined, y = undefined) {
* Element to get the container of.
*
* @return {Element}
* Container element of |el|.
* Container element of <var>el</var>.
*/
element.getContainer = function(el) {
function findAncestralElement(startNode, validAncestors) {
let node = startNode;
while (node.parentNode) {
@ -859,13 +858,12 @@ element.getContainer = function(el) {
return node;
}
}
return startNode;
}
// Does <option> have a valid context,
// Does <option> or <optgroup> have a valid context,
// meaning is it a child of <datalist> or <select>?
if (el.localName === "option") {
if (["option", "optgroup"].includes(el.localName)) {
return findAncestralElement(el, ["datalist", "select"]);
}