summaryrefslogtreecommitdiffstats
path: root/devtools/shared/specs/perf.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--devtools/shared/specs/perf.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/devtools/shared/specs/perf.js b/devtools/shared/specs/perf.js
new file mode 100644
index 0000000000..de8f9ffb21
--- /dev/null
+++ b/devtools/shared/specs/perf.js
@@ -0,0 +1,90 @@
+/* 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,
+ Option,
+ RetVal,
+ generateActorSpec,
+} = require("resource://devtools/shared/protocol.js");
+
+const perfDescription = {
+ typeName: "perf",
+
+ events: {
+ "profiler-started": {
+ type: "profiler-started",
+ entries: Arg(0, "number"),
+ interval: Arg(1, "number"),
+ features: Arg(2, "number"),
+ duration: Arg(3, "nullable:number"),
+ // The `activeTabID` option passed to `profiler_start` is used to
+ // determine the active tab when user starts the profiler.
+ // This is a parameter that is generated on the
+ // server, that's why we don't need to pass anything on `startProfiler`
+ // actor method. But we return this in "profiler-started" event because
+ // client may want to use that value.
+ activeTabID: Arg(4, "number"),
+ },
+ "profiler-stopped": {
+ type: "profiler-stopped",
+ },
+ },
+
+ methods: {
+ startProfiler: {
+ request: {
+ entries: Option(0, "number"),
+ duration: Option(0, "nullable:number"),
+ interval: Option(0, "number"),
+ features: Option(0, "array:string"),
+ threads: Option(0, "array:string"),
+ },
+ response: { value: RetVal("boolean") },
+ },
+
+ /**
+ * Returns null when unable to return the profile.
+ */
+ getProfileAndStopProfiler: {
+ request: {},
+ response: RetVal("nullable:json"),
+ },
+
+ stopProfilerAndDiscardProfile: {
+ request: {},
+ response: {},
+ },
+
+ getSymbolTable: {
+ request: {
+ debugPath: Arg(0, "string"),
+ breakpadId: Arg(1, "string"),
+ },
+ response: { value: RetVal("array:array:number") },
+ },
+
+ isActive: {
+ request: {},
+ response: { value: RetVal("boolean") },
+ },
+
+ isSupportedPlatform: {
+ request: {},
+ response: { value: RetVal("boolean") },
+ },
+
+ getSupportedFeatures: {
+ request: {},
+ response: { value: RetVal("array:string") },
+ },
+ },
+};
+
+exports.perfDescription = perfDescription;
+
+const perfSpec = generateActorSpec(perfDescription);
+
+exports.perfSpec = perfSpec;