summaryrefslogtreecommitdiffstats
path: root/devtools/server/tests/unit/test_profiler_activation-02.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/server/tests/unit/test_profiler_activation-02.js')
-rw-r--r--devtools/server/tests/unit/test_profiler_activation-02.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/devtools/server/tests/unit/test_profiler_activation-02.js b/devtools/server/tests/unit/test_profiler_activation-02.js
new file mode 100644
index 000000000..cf06b1e06
--- /dev/null
+++ b/devtools/server/tests/unit/test_profiler_activation-02.js
@@ -0,0 +1,46 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Tests whether the profiler actor correctly handles the case where the
+ * built-in module was already started.
+ */
+
+const Profiler = Cc["@mozilla.org/tools/profiler;1"].getService(Ci.nsIProfiler);
+const WAIT_TIME = 1000; // ms
+
+function run_test()
+{
+ // Ensure the profiler is already running when the test starts.
+ Profiler.StartProfiler(1000000, 1, ["js"], 1);
+
+ DevToolsUtils.waitForTime(WAIT_TIME).then(() => {
+
+ get_chrome_actors((client, form) => {
+ let actor = form.profilerActor;
+ test_start_time(client, actor, () => {
+ client.close().then(do_test_finished);
+ });
+ });
+ });
+
+ do_test_pending();
+}
+
+function test_start_time(client, actor, callback) {
+ // Profiler should already be active at this point.
+ client.request({ to: actor, type: "isActive" }, firstResponse => {
+ do_check_true(Profiler.IsActive());
+ do_check_true(firstResponse.isActive);
+ do_check_true(firstResponse.currentTime > 0);
+
+ client.request({ to: actor, type: "getProfile" }, secondResponse => {
+ do_check_true("profile" in secondResponse);
+ do_check_true(secondResponse.currentTime > firstResponse.currentTime);
+
+ callback();
+ });
+ });
+}