summaryrefslogtreecommitdiffstats
path: root/devtools/server/tests/browser/browser_perf-profiler-03.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/server/tests/browser/browser_perf-profiler-03.js')
-rw-r--r--devtools/server/tests/browser/browser_perf-profiler-03.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/devtools/server/tests/browser/browser_perf-profiler-03.js b/devtools/server/tests/browser/browser_perf-profiler-03.js
new file mode 100644
index 0000000000..8550fea832
--- /dev/null
+++ b/devtools/server/tests/browser/browser_perf-profiler-03.js
@@ -0,0 +1,55 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * Tests if the built-in profiler module is not reactivated if no other
+ * consumer was using it over the remote debugger protocol, and ensures
+ * that the actor will work properly even in such cases (e.g. the Gecko Profiler
+ * addon was installed and automatically activated the profiler module).
+ */
+
+"use strict";
+
+const {
+ pmmIsProfilerActive,
+ pmmStartProfiler,
+ pmmInitWithBrowser,
+} = require("devtools/client/performance/test/helpers/profiler-mm-utils");
+
+add_task(async function() {
+ // Ensure the profiler is already running when the test starts.
+ pmmInitWithBrowser(gBrowser);
+ const entries = 1000000;
+ const interval = 1;
+ const features = ["js"];
+ await pmmStartProfiler({ entries, interval, features });
+
+ ok(
+ await pmmIsProfilerActive(),
+ "The built-in profiler module should still be active."
+ );
+
+ const target1 = await addTabTarget(MAIN_DOMAIN + "doc_perf.html");
+ const firstFront = await target1.getFront("performance");
+
+ await firstFront.startRecording();
+
+ const target2 = await addTabTarget(MAIN_DOMAIN + "doc_perf.html");
+ const secondFront = await target2.getFront("performance");
+ await secondFront.connect();
+
+ await target2.destroy();
+ ok(
+ await pmmIsProfilerActive(),
+ "The built-in profiler module should still be active."
+ );
+
+ await target1.destroy();
+ ok(
+ !(await pmmIsProfilerActive()),
+ "The built-in profiler module should have been automatically stopped."
+ );
+
+ gBrowser.removeCurrentTab();
+ gBrowser.removeCurrentTab();
+});