diff --git a/devtools/server/actors/inspector.js b/devtools/server/actors/inspector.js index 41f873ea7f6b..b5586e84d48c 100644 --- a/devtools/server/actors/inspector.js +++ b/devtools/server/actors/inspector.js @@ -1755,8 +1755,6 @@ var WalkerActor = protocol.ActorClassWithSpec(walkerSpec, { * Options object: * `parents`: True if the pseudo-class should be added * to parent nodes. - * `enabled`: False if the pseudo-class should be locked - * to 'off'. Defaults to true. * * @returns An empty packet. A "pseudoClassLock" mutation will * be queued for any changed nodes. @@ -1774,9 +1772,7 @@ var WalkerActor = protocol.ActorClassWithSpec(walkerSpec, { } } - let enabled = options.enabled === undefined || - options.enabled; - this._addPseudoClassLock(node, pseudo, enabled); + this._addPseudoClassLock(node, pseudo); if (!options.parents) { return; @@ -1786,7 +1782,7 @@ var WalkerActor = protocol.ActorClassWithSpec(walkerSpec, { let cur; while ((cur = walker.parentNode())) { let curNode = this._ref(cur); - this._addPseudoClassLock(curNode, pseudo, enabled); + this._addPseudoClassLock(curNode, pseudo); } }, @@ -1798,11 +1794,11 @@ var WalkerActor = protocol.ActorClassWithSpec(walkerSpec, { }); }, - _addPseudoClassLock: function (node, pseudo, enabled) { + _addPseudoClassLock: function (node, pseudo) { if (node.rawNode.nodeType !== Ci.nsIDOMNode.ELEMENT_NODE) { return false; } - DOMUtils.addPseudoClassLock(node.rawNode, pseudo, enabled); + DOMUtils.addPseudoClassLock(node.rawNode, pseudo); this._activePseudoClassLocks.add(node); this._queuePseudoClassMutation(node); return true; diff --git a/devtools/server/tests/mochitest/inspector-traversal-data.html b/devtools/server/tests/mochitest/inspector-traversal-data.html index 840b444a5314..45b8c2ededc4 100644 --- a/devtools/server/tests/mochitest/inspector-traversal-data.html +++ b/devtools/server/tests/mochitest/inspector-traversal-data.html @@ -1,4 +1,3 @@ -
diff --git a/devtools/server/tests/mochitest/test_inspector-pseudoclass-lock.html b/devtools/server/tests/mochitest/test_inspector-pseudoclass-lock.html index 821a4ab7328d..64bb03f80a57 100644 --- a/devtools/server/tests/mochitest/test_inspector-pseudoclass-lock.html +++ b/devtools/server/tests/mochitest/test_inspector-pseudoclass-lock.html @@ -60,21 +60,16 @@ function checkChange(change, expectation) { is(target.pseudoClassLocks.length, expectation.pseudos.length, "Expect " + expectation.pseudos.length + " pseudoclass locks."); - for (let i = 0; i < expectation.pseudos.length; i++) { - let pseudo = expectation.pseudos[i]; - let enabled = expectation.enabled === undefined ? true : expectation.enabled[i]; + for (let pseudo of expectation.pseudos) { ok(target.hasPseudoClassLock(pseudo), "Expect lock: " + pseudo); - let rawNode = target.rawNode(); - ok(DOMUtils.hasPseudoClassLock(rawNode, pseudo), "Expect lock in dom: " + pseudo); - - is(rawNode.matches(pseudo), enabled, - `Target should match pseudoclass, '${pseudo}', if enabled (with .matches())`); + ok(DOMUtils.hasPseudoClassLock(target.rawNode(), pseudo), "Expect lock in dom: " + pseudo); } for (let pseudo of KNOWN_PSEUDOCLASSES) { if (!expectation.pseudos.some(expected => pseudo === expected)) { ok(!target.hasPseudoClassLock(pseudo), "Don't expect lock: " + pseudo); ok(!DOMUtils.hasPseudoClassLock(target.rawNode(), pseudo), "Don't expect lock in dom: " + pseudo); + } } } @@ -98,7 +93,7 @@ addTest(function testPseudoClassLock() { // Expect a single pseudoClassLock mutation. return promiseOnce(gWalker, "mutations"); }).then(mutations => { - is(mutations.length, 1, "Should get one mutation"); + is(mutations.length, 1, "Should get one mutations"); is(mutations[0].target, nodeFront, "Should be the node we tried to apply to"); checkChange(mutations[0], { id: "b", @@ -154,18 +149,6 @@ addTest(function testPseudoClassLock() { pseudos: [] }]; checkMutations(mutations, expectedMutations); - }).then(() => { - gWalker.addPseudoClassLock(nodeFront, ":hover", {enabled: false}); - return promiseOnce(gWalker, "mutations"); - }).then(mutations => { - is(mutations.length, 1, "Should get one mutation"); - is(mutations[0].target, nodeFront, "Should be the node we tried to apply to"); - checkChange(mutations[0], { - id: "b", - nodeName: "DIV", - pseudos: [":hover", ":active"], - enabled: [false, true] - }); }).then(() => { // Now shut down the walker and make sure that clears up the remaining lock. return gWalker.release(); diff --git a/devtools/shared/specs/inspector.js b/devtools/shared/specs/inspector.js index 5a087379530e..e07ec67c3765 100644 --- a/devtools/shared/specs/inspector.js +++ b/devtools/shared/specs/inspector.js @@ -234,8 +234,7 @@ const walkerSpec = generateActorSpec({ request: { node: Arg(0, "domnode"), pseudoClass: Arg(1), - parents: Option(2), - enabled: Option(2, "boolean"), + parents: Option(2) }, response: {} }, diff --git a/dom/base/Element.cpp b/dom/base/Element.cpp index 3b91fded304b..adf22ee89857 100644 --- a/dom/base/Element.cpp +++ b/dom/base/Element.cpp @@ -346,30 +346,27 @@ Element::Blur(mozilla::ErrorResult& aError) EventStates Element::StyleStateFromLocks() const { - StyleStateLocks locksAndValues = LockedStyleStates(); - EventStates locks = locksAndValues.mLocks; - EventStates values = locksAndValues.mValues; - EventStates state = (mState & ~locks) | (locks & values); + EventStates locks = LockedStyleStates(); + EventStates state = mState | locks; - if (state.HasState(NS_EVENT_STATE_VISITED)) { + if (locks.HasState(NS_EVENT_STATE_VISITED)) { return state & ~NS_EVENT_STATE_UNVISITED; } - if (state.HasState(NS_EVENT_STATE_UNVISITED)) { + if (locks.HasState(NS_EVENT_STATE_UNVISITED)) { return state & ~NS_EVENT_STATE_VISITED; } - return state; } -Element::StyleStateLocks +EventStates Element::LockedStyleStates() const { - StyleStateLocks* locks = - static_cast