summaryrefslogtreecommitdiffstats
path: root/devtools/server/tests/unit/test_profiler_close.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /devtools/server/tests/unit/test_profiler_close.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'devtools/server/tests/unit/test_profiler_close.js')
-rw-r--r--devtools/server/tests/unit/test_profiler_close.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/devtools/server/tests/unit/test_profiler_close.js b/devtools/server/tests/unit/test_profiler_close.js
new file mode 100644
index 000000000..a8b3040fd
--- /dev/null
+++ b/devtools/server/tests/unit/test_profiler_close.js
@@ -0,0 +1,69 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Tests whether the profiler module is kept active when there are multiple
+ * client consumers and one requests deactivation.
+ */
+
+const Profiler = Cc["@mozilla.org/tools/profiler;1"].getService(Ci.nsIProfiler);
+
+function run_test()
+{
+ get_chrome_actors((client1, form1) => {
+ let actor1 = form1.profilerActor;
+ get_chrome_actors((client2, form2) => {
+ let actor2 = form2.profilerActor;
+ test_close(client1, actor1, client2, actor2, () => {
+ client1.close(() => {
+ client2.close(() => {
+ do_test_finished();
+ });
+ });
+ });
+ });
+ });
+
+ do_test_pending();
+}
+
+function activate_profiler(client, actor, callback)
+{
+ client.request({ to: actor, type: "startProfiler" }, response => {
+ do_check_true(response.started);
+ do_check_true(Profiler.IsActive());
+
+ client.request({ to: actor, type: "isActive" }, response => {
+ do_check_true(response.isActive);
+ callback();
+ });
+ });
+}
+
+function deactivate_profiler(client, actor, callback)
+{
+ client.request({ to: actor, type: "stopProfiler" }, response => {
+ do_check_false(response.started);
+ do_check_true(Profiler.IsActive());
+
+ client.request({ to: actor, type: "isActive" }, response => {
+ do_check_true(response.isActive);
+ callback();
+ });
+ });
+}
+
+function test_close(client1, actor1, client2, actor2, callback)
+{
+ activate_profiler(client1, actor1, () => {
+ activate_profiler(client2, actor2, () => {
+ deactivate_profiler(client1, actor1, () => {
+ deactivate_profiler(client2, actor2, () => {
+ callback();
+ });
+ });
+ });
+ });
+}