fune/devtools/shared/specs/style-rule.js
Nicolas Chevobbe 00840021c6 Bug 1796095 - [devtools] Display query container data in a tooltip in the rule view. r=jdescottes,devtools-backward-compat-reviewers.
This patch adds a tooltip that is displayed when the user hovers a `@container`
declaration in the rule view.
The tooltip displays the query container that is used for this rule and the selected
node and the computed values of its `containerType`, `inlineSize` and `blockSize`
(if the `containerType` is `size`) properties.

The title attribute is removed on the `ruleview-rule-ancestor-data` items as it
was not playing well with the new tooltip. The styling for those element is
modified so they are never cropped so we can see the whole text (and don't need
the title anymore).

A test case is added to make sure this works as expected.

Differential Revision: https://phabricator.services.mozilla.com/D161129
2022-11-08 12:46:27 +00:00

73 lines
1.8 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const {
Arg,
RetVal,
generateActorSpec,
types,
} = require("resource://devtools/shared/protocol.js");
// Load the shared types for style actors
require("resource://devtools/shared/specs/style/style-types.js");
types.addDictType("domstylerule.queryContainerForNodeReturn", {
node: "nullable:domnode",
containerType: "nullable:string",
blockSize: "nullable:string",
inlineSize: "nullable:string",
});
const styleRuleSpec = generateActorSpec({
typeName: "domstylerule",
events: {
"location-changed": {
type: "locationChanged",
line: Arg(0, "number"),
column: Arg(1, "number"),
},
"rule-updated": {
type: "ruleUpdated",
rule: Arg(0, "domstylerule"),
},
},
methods: {
getRuleText: {
response: {
text: RetVal("string"),
},
},
setRuleText: {
request: {
newText: Arg(0, "string"),
modifications: Arg(1, "array:json"),
},
response: { rule: RetVal("domstylerule") },
},
modifyProperties: {
request: { modifications: Arg(0, "array:json") },
response: { rule: RetVal("domstylerule") },
},
modifySelector: {
request: {
node: Arg(0, "domnode"),
value: Arg(1, "string"),
editAuthored: Arg(2, "boolean"),
},
response: RetVal("modifiedStylesReturn"),
},
getQueryContainerForNode: {
request: {
ancestorRuleIndex: Arg(0, "number"),
node: Arg(1, "domnode"),
},
response: RetVal("domstylerule.queryContainerForNodeReturn"),
},
},
});
exports.styleRuleSpec = styleRuleSpec;