summaryrefslogtreecommitdiff
path: root/browser/devtools/profiler/test/browser_profiler_console_api_named.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/devtools/profiler/test/browser_profiler_console_api_named.js')
-rw-r--r--browser/devtools/profiler/test/browser_profiler_console_api_named.js66
1 files changed, 66 insertions, 0 deletions
diff --git a/browser/devtools/profiler/test/browser_profiler_console_api_named.js b/browser/devtools/profiler/test/browser_profiler_console_api_named.js
new file mode 100644
index 000000000..460676aa7
--- /dev/null
+++ b/browser/devtools/profiler/test/browser_profiler_console_api_named.js
@@ -0,0 +1,66 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+const URL = "data:text/html;charset=utf8,<p>JavaScript Profiler test</p>";
+
+let gTab, gPanel;
+
+function test() {
+ waitForExplicitFinish();
+
+ setUp(URL, (tab, browser, panel) => {
+ gTab = tab;
+ gPanel = panel;
+
+ openConsole(tab, testConsoleProfile);
+ });
+}
+
+function testConsoleProfile(hud) {
+ hud.jsterm.clearOutput(true);
+
+ // Here we start two named profiles and then end one of them.
+
+ let profilesStarted = 0;
+
+ function profileEnd(_, uid) {
+ let profile = gPanel.profiles.get(uid);
+
+ profile.once("started", () => {
+ if (++profilesStarted < 2)
+ return;
+
+ gPanel.off("profileCreated", profileEnd);
+ gPanel.profiles.get(2).once("stopped", () => {
+ openProfiler(gTab, checkProfiles);
+ });
+
+ hud.jsterm.execute("console.profileEnd('Second')");
+ });
+ }
+
+ gPanel.on("profileCreated", profileEnd);
+ hud.jsterm.execute("console.profile('Second')");
+ hud.jsterm.execute("console.profile('Third')");
+}
+
+function checkProfiles(toolbox) {
+ let panel = toolbox.getPanel("jsprofiler");
+
+ is(getSidebarItem(1, panel).attachment.state, PROFILE_IDLE);
+ is(getSidebarItem(2, panel).attachment.name, "Second");
+ is(getSidebarItem(2, panel).attachment.state, PROFILE_COMPLETED);
+ is(getSidebarItem(3, panel).attachment.name, "Third");
+ is(getSidebarItem(3, panel).attachment.state, PROFILE_RUNNING);
+
+ // Make sure we can still stop profiles via the queue pop.
+
+ gPanel.profiles.get(3).once("stopped", () => {
+ openProfiler(gTab, () => {
+ is(getSidebarItem(3, panel).attachment.state, PROFILE_COMPLETED);
+ tearDown(gTab, () => gTab = gPanel = null);
+ });
+ });
+
+ openConsole(gTab, (hud) => hud.jsterm.execute("console.profileEnd()"));
+} \ No newline at end of file