Bug 985517 - Remove pseudo class locks of children to prevent ending up with broken pseudo class state. r=pbro
MozReview-Commit-ID: LAh6HdKKJsk
--- a/devtools/server/actors/inspector.js
+++ b/devtools/server/actors/inspector.js
@@ -1839,16 +1839,25 @@ var WalkerActor = protocol.ActorClassWit
*/
removePseudoClassLock: function (node, pseudo, options = {}) {
if (isNodeDead(node)) {
return;
}
this._removePseudoClassLock(node, pseudo);
+ // Remove pseudo class for children as we don't want to allow
+ // turning it on for some childs without setting it on some parents
+ for (let locked of this._activePseudoClassLocks) {
+ if (node.rawNode.contains(locked.rawNode) &&
+ DOMUtils.hasPseudoClassLock(locked.rawNode, pseudo)) {
+ this._removePseudoClassLock(locked, pseudo);
+ }
+ }
+
if (!options.parents) {
return;
}
let walker = this.getDocumentWalker(node.rawNode);
let cur;
while ((cur = walker.parentNode())) {
let curNode = this._ref(cur);