tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 6cca86e7b1fcf2d868803b09e72f8a05ec44c066
parent d7679d7acc1bca859a296e21655686c90ec1874b
Author: Nicolas Chevobbe <nchevobbe@mozilla.com>
Date:   Fri, 14 Nov 2025 10:29:13 +0000

Bug 1597411 - [devtools] Directly use node.isNativeAnonymous and cleanup usages. r=devtools-reviewers,ochameau.

Remove devtools/shared/layout/utils.js isNativeAnonymous/isAnonymous and switch
callsites to directly use node.isNativeAnonymous getter.
On the client rename isAnonymous into isNativeAnonymous so it's consistent
with the platform implementation.

Differential Revision: https://phabricator.services.mozilla.com/D271553

Diffstat:
Mdevtools/client/framework/selection.js | 4++--
Mdevtools/client/fronts/node.js | 4++--
Mdevtools/client/inspector/inspector.js | 2+-
Mdevtools/client/inspector/markup/markup-context-menu.js | 4++--
Mdevtools/client/inspector/markup/markup.js | 2+-
Mdevtools/client/inspector/markup/test/browser_markup_anonymous_01.js | 2+-
Mdevtools/client/inspector/markup/test/browser_markup_anonymous_04.js | 5++---
Mdevtools/client/inspector/markup/views/markup-container.js | 2+-
Mdevtools/client/inspector/rules/rules.js | 2+-
Mdevtools/client/inspector/rules/views/rule-editor.js | 2+-
Mdevtools/client/inspector/shared/style-inspector-menu.js | 3++-
Mdevtools/server/actors/inspector/event-collector.js | 7+------
Mdevtools/server/actors/inspector/node.js | 5+----
Mdevtools/server/actors/inspector/utils.js | 4++--
Mdevtools/server/tests/browser/browser_inspector-anonymous.js | 31+++++++++----------------------
Mdevtools/shared/layout/utils.js | 13-------------
16 files changed, 29 insertions(+), 63 deletions(-)

diff --git a/devtools/client/framework/selection.js b/devtools/client/framework/selection.js @@ -277,8 +277,8 @@ class Selection extends EventEmitter { return this.isNode() && this.nodeFront.isPseudoElement; } - isAnonymousNode() { - return this.isNode() && this.nodeFront.isAnonymous; + isNativeAnonymousNode() { + return this.isNode() && this.nodeFront.isNativeAnonymous; } isAttributeNode() { diff --git a/devtools/client/fronts/node.js b/devtools/client/fronts/node.js @@ -398,8 +398,8 @@ class NodeFront extends FrontClassWithSpec(nodeSpec) { return this._form.isPseudoElement; } - get isAnonymous() { - return this._form.isAnonymous; + get isNativeAnonymous() { + return this._form.isNativeAnonymous; } get isInHTMLDocument() { return this._form.isInHTMLDocument; diff --git a/devtools/client/inspector/inspector.js b/devtools/client/inspector/inspector.js @@ -1626,7 +1626,7 @@ class Inspector extends EventEmitter { selection.isHTMLNode() && selection.isElementNode() && !selection.isPseudoElementNode() && - !selection.isAnonymousNode() && + !selection.isNativeAnonymousNode() && !invalidTagNames.includes(selection.nodeFront.nodeName.toLowerCase()) ); } diff --git a/devtools/client/inspector/markup/markup-context-menu.js b/devtools/client/inspector/markup/markup-context-menu.js @@ -187,7 +187,7 @@ class MarkupContextMenu { if ( !this.selection.isElementNode() || this.selection.isRoot() || - this.selection.isAnonymousNode() || + this.selection.isNativeAnonymousNode() || this.selection.isPseudoElementNode() ) { return; @@ -732,7 +732,7 @@ class MarkupContextMenu { markupContainer && markupContainer.editor.getInfoAtNode(target); const isFragment = this.selection.isDocumentFragmentNode(); - const isAnonymous = this.selection.isAnonymousNode(); + const isAnonymous = this.selection.isNativeAnonymousNode(); const isElement = this.selection.isElementNode() && !this.selection.isPseudoElementNode(); const isDuplicatableElement = diff --git a/devtools/client/inspector/markup/markup.js b/devtools/client/inspector/markup/markup.js @@ -1512,7 +1512,7 @@ class MarkupView extends EventEmitter { nodeFront.nodeType == nodeConstants.DOCUMENT_NODE || nodeFront.nodeType == nodeConstants.DOCUMENT_TYPE_NODE || nodeFront.nodeType == nodeConstants.DOCUMENT_FRAGMENT_NODE || - nodeFront.isAnonymous + nodeFront.isNativeAnonymous ); } diff --git a/devtools/client/inspector/markup/test/browser_markup_anonymous_01.js b/devtools/client/inspector/markup/test/browser_markup_anonymous_01.js @@ -35,7 +35,7 @@ add_task(async function () { info("Checking the input element"); const child = nativeChildren.nodes[0]; - ok(!child.isAnonymous, "<input type=file> is not anonymous"); + ok(!child.isNativeAnonymous, "<input type=file> is not anonymous"); const grandchildren = await inspector.walker.children(child); is( diff --git a/devtools/client/inspector/markup/test/browser_markup_anonymous_04.js b/devtools/client/inspector/markup/test/browser_markup_anonymous_04.js @@ -21,7 +21,7 @@ add_task(async function () { info("Checking the input element"); const child = nativeChildren.nodes[0]; - ok(!child.isAnonymous, "<input type=file> is not anonymous"); + ok(!child.isNativeAnonymous, "<input type=file> is not anonymous"); const grandchildren = await inspector.walker.children(child); is( @@ -31,8 +31,7 @@ add_task(async function () { ); for (const node of grandchildren.nodes) { - ok(node.isAnonymous, "Child is anonymous"); - ok(node._form.isNativeAnonymous, "Child is native anonymous"); + ok(node.isNativeAnonymous, "Child is native anonymous"); await isEditingMenuDisabled(node, inspector); } }); diff --git a/devtools/client/inspector/markup/views/markup-container.js b/devtools/client/inspector/markup/views/markup-container.js @@ -466,7 +466,7 @@ MarkupContainer.prototype = { return ( !this.node.isPseudoElement && - !this.node.isAnonymous && + !this.node.isNativeAnonymous && !this.node.isDocumentElement && tagName !== "body" && tagName !== "head" && diff --git a/devtools/client/inspector/rules/rules.js b/devtools/client/inspector/rules/rules.js @@ -771,7 +771,7 @@ CssRuleView.prototype = { const shouldBeDisabled = !this._viewedElement || !this.inspector.selection.isElementNode() || - this.inspector.selection.isAnonymousNode(); + this.inspector.selection.isNativeAnonymousNode(); this.addRuleButton.disabled = shouldBeDisabled; }, diff --git a/devtools/client/inspector/rules/views/rule-editor.js b/devtools/client/inspector/rules/views/rule-editor.js @@ -148,7 +148,7 @@ RuleEditor.prototype = { // Do not allow editing anonymousselectors until we can // detect mutations on pseudo elements in Bug 1034110. - return trait && !this.rule.elementStyle.element.isAnonymous; + return trait && !this.rule.elementStyle.element.isNativeAnonymous; }, _create() { diff --git a/devtools/client/inspector/shared/style-inspector-menu.js b/devtools/client/inspector/shared/style-inspector-menu.js @@ -256,7 +256,8 @@ StyleInspectorMenu.prototype = { accesskey: STYLE_INSPECTOR_L10N.getStr(addRuleAccessKey), click: () => this.view._onAddRule(), visible: this.isRuleView, - disabled: !this.isRuleView || this.inspector.selection.isAnonymousNode(), + disabled: + !this.isRuleView || this.inspector.selection.isNativeAnonymousNode(), }); menu.append(menuitemAddRule); diff --git a/devtools/server/actors/inspector/event-collector.js b/devtools/server/actors/inspector/event-collector.js @@ -7,9 +7,6 @@ "use strict"; -const { - isNativeAnonymous, -} = require("resource://devtools/shared/layout/utils.js"); const Debugger = require("Debugger"); const { EXCLUDED_LISTENER, @@ -422,9 +419,7 @@ class JQueryEventCollector extends MainEventCollector { const jQuery = this.getJQuery(node); const handlers = []; - // If jQuery is not on the page, if this is an anonymous node (that includes pseudo - // elements), we need to return early. - if (!jQuery || isNativeAnonymous(node)) { + if (!jQuery || node.isNativeAnonymous) { if (checkOnly) { return false; } diff --git a/devtools/server/actors/inspector/node.js b/devtools/server/actors/inspector/node.js @@ -25,11 +25,9 @@ loader.lazyRequireGetter( this, [ "getShadowRootMode", - "isAnonymous", "isDirectShadowHostChild", "isFrameBlockedByCSP", "isFrameWithChildTarget", - "isNativeAnonymous", "isShadowHost", "isShadowRoot", ], @@ -210,8 +208,7 @@ class NodeActor extends Actor { attrs: this.writeAttrs(), customElementLocation: this.getCustomElementLocation(), isPseudoElement: !!this.rawNode.implementedPseudoElement, - isAnonymous: isAnonymous(this.rawNode), - isNativeAnonymous: isNativeAnonymous(this.rawNode), + isNativeAnonymous: this.rawNode.isNativeAnonymous, isShadowRoot: shadowRoot, shadowRootMode: getShadowRootMode(this.rawNode), isShadowHost: isShadowHost(this.rawNode), diff --git a/devtools/server/actors/inspector/utils.js b/devtools/server/actors/inspector/utils.js @@ -28,7 +28,7 @@ loader.lazyRequireGetter( ); loader.lazyRequireGetter( this, - ["isNativeAnonymous", "getAdjustedQuads"], + "getAdjustedQuads", "resource://devtools/shared/layout/utils.js", true ); @@ -194,7 +194,7 @@ function noAnonymousContentTreeWalkerFilter(node) { // Ignore all native anonymous content inside a non-XUL document. // We need to do this to skip things like form controls, scrollbars, // video controls, etc (see bug 1187482). - if (!isInXULDocument(node) && isNativeAnonymous(node)) { + if (!isInXULDocument(node) && node.isNativeAnonymous) { return nodeFilterConstants.FILTER_SKIP; } diff --git a/devtools/server/tests/browser/browser_inspector-anonymous.js b/devtools/server/tests/browser/browser_inspector-anonymous.js @@ -118,15 +118,13 @@ async function testPseudoElements(walker) { is(children.nodes.length, 3, "Correct number of children"); const before = children.nodes[0]; - ok(before.isAnonymous, "Child is anonymous"); - ok(before._form.isNativeAnonymous, "Child is native anonymous"); + ok(before.isNativeAnonymous, "Child is native anonymous"); const span = children.nodes[1]; - ok(!span.isAnonymous, "Child is not anonymous"); + ok(!span.isNativeAnonymous, "Child is not anonymous"); const after = children.nodes[2]; - ok(after.isAnonymous, "Child is anonymous"); - ok(after._form.isNativeAnonymous, "Child is native anonymous"); + ok(after.isNativeAnonymous, "Child is native anonymous"); } async function testEmptyWithPseudo(walker) { @@ -144,8 +142,7 @@ async function testEmptyWithPseudo(walker) { is(children.nodes.length, 1, "Correct number of children"); const before = children.nodes[0]; - ok(before.isAnonymous, "Child is anonymous"); - ok(before._form.isNativeAnonymous, "Child is native anonymous"); + ok(before.isNativeAnonymous, "Child is native anonymous"); } async function testShadowAnonymous(walker) { @@ -164,8 +161,7 @@ async function testShadowAnonymous(walker) { "_moz_generated_content_before", "Should be the ::before pseudo-element" ); - ok(before.isAnonymous, "::before is anonymous"); - ok(before._form.isNativeAnonymous, "::before is native anonymous"); + ok(before.isNativeAnonymous, "::before is native anonymous"); info(JSON.stringify(before._form)); const shadow = children.nodes[0]; @@ -176,11 +172,7 @@ async function testShadowAnonymous(walker) { // <h3>Shadow <em>DOM</em></h3> const shadowChild1 = shadowChildren.nodes[0]; - ok(!shadowChild1.isAnonymous, "Shadow child is not anonymous"); - ok( - !shadowChild1._form.isNativeAnonymous, - "Shadow child is not native anonymous" - ); + ok(!shadowChild1.isNativeAnonymous, "Shadow child is not native anonymous"); const shadowSubChildren = await walker.children(shadowChild1); is(shadowChild1.numChildren, 2, "Subchildren of the shadow root are counted"); @@ -189,16 +181,11 @@ async function testShadowAnonymous(walker) { // <em>DOM</em> const shadowSubChild = shadowSubChildren.nodes[1]; ok( - !shadowSubChild.isAnonymous, - "Subchildren of shadow root are not anonymous" - ); - ok( - !shadowSubChild._form.isNativeAnonymous, - "Subchildren of shadow root is not native anonymous" + !shadowSubChild.isNativeAnonymous, + "Subchildren of shadow root are not native anonymous" ); // <select multiple></select> const shadowChild2 = shadowChildren.nodes[1]; - ok(!shadowChild2.isAnonymous, "Child is anonymous"); - ok(!shadowChild2._form.isNativeAnonymous, "Child is not native anonymous"); + ok(!shadowChild2.isNativeAnonymous, "Child is native anonymous"); } diff --git a/devtools/shared/layout/utils.js b/devtools/shared/layout/utils.js @@ -421,19 +421,6 @@ function isNodeConnected(node) { exports.isNodeConnected = isNodeConnected; /** - * Determine whether a node is anonymous. - * - * @param {DOMNode} node - * @return {Boolean} - * - * FIXME(bug 1597411): Remove one of these (or both, as - * `node.isNativeAnonymous` is quite clear). - */ -const isAnonymous = node => node.isNativeAnonymous; -exports.isAnonymous = isAnonymous; -exports.isNativeAnonymous = isAnonymous; - -/** * Determine whether a node is a template element. * * @param {DOMNode} node