summaryrefslogtreecommitdiff
path: root/browser/devtools/debugger/test/browser_dbg_listtabs-01.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/devtools/debugger/test/browser_dbg_listtabs-01.js')
-rw-r--r--browser/devtools/debugger/test/browser_dbg_listtabs-01.js102
1 files changed, 102 insertions, 0 deletions
diff --git a/browser/devtools/debugger/test/browser_dbg_listtabs-01.js b/browser/devtools/debugger/test/browser_dbg_listtabs-01.js
new file mode 100644
index 000000000..12b0ce77c
--- /dev/null
+++ b/browser/devtools/debugger/test/browser_dbg_listtabs-01.js
@@ -0,0 +1,102 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Make sure the listTabs request works as specified.
+
+var gTab1 = null;
+var gTab1Actor = null;
+
+var gTab2 = null;
+var gTab2Actor = null;
+
+var gClient = null;
+
+function test()
+{
+ let transport = DebuggerServer.connectPipe();
+ gClient = new DebuggerClient(transport);
+ gClient.connect(function(aType, aTraits) {
+ is(aType, "browser", "Root actor should identify itself as a browser.");
+ test_first_tab();
+ });
+}
+
+/**
+ * Verify that a new tab shows up in a listTabs call.
+ */
+function test_first_tab()
+{
+ gTab1 = addTab(TAB1_URL, function() {
+ gClient.listTabs(function(aResponse) {
+ for each (let tab in aResponse.tabs) {
+ if (tab.url == TAB1_URL) {
+ gTab1Actor = tab.actor;
+ }
+ }
+ ok(gTab1Actor, "Should find a tab actor for tab1.");
+ test_second_tab();
+ });
+ });
+}
+
+function test_second_tab()
+{
+ gTab2 = addTab(TAB2_URL, function() {
+ gClient.listTabs(function(aResponse) {
+ // Verify that tab1 has the same actor it used to.
+ let foundTab1 = false;
+ for each (let tab in aResponse.tabs) {
+ if (tab.url == TAB1_URL) {
+ is(tab.actor, gTab1Actor, "Tab1's actor shouldn't have changed.");
+ foundTab1 = true;
+ }
+ if (tab.url == TAB2_URL) {
+ gTab2Actor = tab.actor;
+ }
+ }
+ ok(foundTab1, "Should have found an actor for tab 1.");
+ ok(gTab2Actor != null, "Should find an actor for tab2.");
+
+ test_remove_tab();
+ });
+ });
+}
+
+function test_remove_tab()
+{
+ removeTab(gTab1);
+ gTab1 = null;
+ gClient.listTabs(function(aResponse) {
+ // Verify that tab1 is no longer included in listTabs.
+ let foundTab1 = false;
+ for each (let tab in aResponse.tabs) {
+ if (tab.url == TAB1_URL) {
+ ok(false, "Tab1 should be gone.");
+ }
+ }
+ ok(!foundTab1, "Tab1 should be gone.");
+ test_attach_removed_tab();
+ });
+}
+
+function test_attach_removed_tab()
+{
+ removeTab(gTab2);
+ gTab2 = null;
+ gClient.addListener("paused", function(aEvent, aPacket) {
+ ok(false, "Attaching to an exited tab actor shouldn't generate a pause.");
+ finish_test();
+ });
+
+ gClient.request({ to: gTab2Actor, type: "attach" }, function(aResponse) {
+ is(aResponse.type, "exited", "Tab should consider itself exited.");
+ finish_test();
+ });
+}
+
+function finish_test()
+{
+ gClient.close(function() {
+ finish();
+ });
+}