summaryrefslogtreecommitdiffstats
path: root/devtools/shared/specs/style
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--devtools/shared/specs/style-rule.js73
-rw-r--r--devtools/shared/specs/style-sheets.js49
-rw-r--r--devtools/shared/specs/style/moz.build9
-rw-r--r--devtools/shared/specs/style/style-types.js78
4 files changed, 209 insertions, 0 deletions
diff --git a/devtools/shared/specs/style-rule.js b/devtools/shared/specs/style-rule.js
new file mode 100644
index 0000000000..cb06a578b9
--- /dev/null
+++ b/devtools/shared/specs/style-rule.js
@@ -0,0 +1,73 @@
+/* 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;
diff --git a/devtools/shared/specs/style-sheets.js b/devtools/shared/specs/style-sheets.js
new file mode 100644
index 0000000000..94d3e72f5f
--- /dev/null
+++ b/devtools/shared/specs/style-sheets.js
@@ -0,0 +1,49 @@
+/* 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,
+} = require("resource://devtools/shared/protocol.js");
+
+const styleSheetsSpec = generateActorSpec({
+ typeName: "stylesheets",
+
+ events: {},
+
+ methods: {
+ getTraits: {
+ request: {},
+ response: { traits: RetVal("json") },
+ },
+ addStyleSheet: {
+ request: {
+ text: Arg(0, "string"),
+ fileName: Arg(1, "nullable:string"),
+ },
+ response: {},
+ },
+ toggleDisabled: {
+ request: { resourceId: Arg(0, "string") },
+ response: { disabled: RetVal("boolean") },
+ },
+ getText: {
+ request: { resourceId: Arg(0, "string") },
+ response: { text: RetVal("longstring") },
+ },
+ update: {
+ request: {
+ resourceId: Arg(0, "string"),
+ text: Arg(1, "string"),
+ transition: Arg(2, "boolean"),
+ cause: Arg(3, "nullable:string"),
+ },
+ response: {},
+ },
+ },
+});
+
+exports.styleSheetsSpec = styleSheetsSpec;
diff --git a/devtools/shared/specs/style/moz.build b/devtools/shared/specs/style/moz.build
new file mode 100644
index 0000000000..56883cc51a
--- /dev/null
+++ b/devtools/shared/specs/style/moz.build
@@ -0,0 +1,9 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# 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/.
+
+DevToolsModules(
+ "style-types.js",
+)
diff --git a/devtools/shared/specs/style/style-types.js b/devtools/shared/specs/style/style-types.js
new file mode 100644
index 0000000000..0a86353b4d
--- /dev/null
+++ b/devtools/shared/specs/style/style-types.js
@@ -0,0 +1,78 @@
+/* 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 { RetVal, types } = require("resource://devtools/shared/protocol.js");
+
+// Predeclare the domstylerule actor type
+types.addActorType("domstylerule");
+
+/**
+ * When asking for the styles applied to a node, we return a list of
+ * appliedstyle json objects that lists the rules that apply to the node
+ * and which element they were inherited from (if any).
+ *
+ * Note appliedstyle only sends the list of actorIDs and is not a valid return
+ * value on its own. appliedstyle should be returned with the actual list of
+ * StyleRuleActor and StyleSheetActor. See appliedStylesReturn.
+ */
+types.addDictType("appliedstyle", {
+ rule: "domstylerule#actorid",
+ inherited: "nullable:domnode#actorid",
+ keyframes: "nullable:domstylerule#actorid",
+});
+
+types.addDictType("matchedselector", {
+ rule: "domstylerule#actorid",
+ selector: "string",
+ value: "string",
+ status: "number",
+});
+
+types.addDictType("appliedStylesReturn", {
+ entries: "array:appliedstyle",
+ rules: "array:domstylerule",
+});
+
+types.addDictType("modifiedStylesReturn", {
+ isMatching: RetVal("boolean"),
+ ruleProps: RetVal("nullable:appliedStylesReturn"),
+});
+
+types.addDictType("fontpreview", {
+ data: "nullable:longstring",
+ size: "json",
+});
+
+types.addDictType("fontvariationaxis", {
+ tag: "string",
+ name: "string",
+ minValue: "number",
+ maxValue: "number",
+ defaultValue: "number",
+});
+
+types.addDictType("fontvariationinstancevalue", {
+ axis: "string",
+ value: "number",
+});
+
+types.addDictType("fontvariationinstance", {
+ name: "string",
+ values: "array:fontvariationinstancevalue",
+});
+
+types.addDictType("fontface", {
+ name: "string",
+ CSSFamilyName: "string",
+ rule: "nullable:domstylerule",
+ srcIndex: "number",
+ URI: "string",
+ format: "string",
+ preview: "nullable:fontpreview",
+ localName: "string",
+ metadata: "string",
+ variationAxes: "array:fontvariationaxis",
+ variationInstances: "array:fontvariationinstance",
+});