Bug 1343174 - Part 2 - Rewrite test_selectoraddtab to track tabs instead of browsers. r?ahunt draft
authorJan Henning <jh+bugzilla@buttercookie.de>
Tue, 28 Feb 2017 20:44:03 +0100
changeset 490565 99be5bd4d05de13c44c16ef27fe1f4bbb3c7446b
parent 490564 f994992778372854da401219fd2b3114524922af
child 490566 8bbdb2eca21cc5cbdcc025fe7f3535a238f07976
push id47137
push usermozilla@buttercookie.de
push dateTue, 28 Feb 2017 20:16:22 +0000
reviewersahunt
bugs1343174
milestone54.0a1
Bug 1343174 - Part 2 - Rewrite test_selectoraddtab to track tabs instead of browsers. r?ahunt It's easy to get a tab's browser, but going the other way round requires always calling getTabForBrowser(), which then additionally has to search each open tab in turn to find the tab with the matching browser. Also, the browser won't survive tab zombification, so for Part 3 we'll have to start keeping a reference to the tab object anyway. MozReview-Commit-ID: B2aC7vB0cuj
mobile/android/tests/browser/chrome/test_selectoraddtab.html
--- a/mobile/android/tests/browser/chrome/test_selectoraddtab.html
+++ b/mobile/android/tests/browser/chrome/test_selectoraddtab.html
@@ -17,70 +17,81 @@ https://bugzilla.mozilla.org/show_bug.cg
 
   const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
 
   Cu.import("resource://gre/modules/Services.jsm");
   Cu.import("resource://gre/modules/Messaging.jsm");
   Cu.import("resource://gre/modules/Task.jsm");
 
   // The chrome window
-  let chromeWin;
+  let chromeWin = Services.wm.getMostRecentWindow("navigator:browser");
+  let BrowserApp = chromeWin.BrowserApp;
+
+  // Track the tabs where the tests are happening
+  let tabBlank;
+  let tabTest;
 
-  // Track the <browser>s where the tests are happening
-  let browserBlank;
-  let browserTest;
+  function cleanupTabs() {
+    if (tabBlank) {
+      BrowserApp.closeTab(tabBlank);
+      tabBlank = null;
+    }
+
+    if (tabTest) {
+      BrowserApp.closeTab(tabTest);
+      tabTest = null;
+    }
+  }
+
+  SimpleTest.registerCleanupFunction(function() {
+    cleanupTabs();
+  });
 
   const kTestPage = "http://mochi.test:8888/chrome/mobile/android/tests/browser/chrome/basic_article.html";
 
   add_task(function* test_selectOrAdd() {
-    chromeWin = Services.wm.getMostRecentWindow("navigator:browser");
-    let BrowserApp = chromeWin.BrowserApp;
+    // Add a new tab with a blank page
+    tabBlank = BrowserApp.addTab("about:blank", { selected: true, parentId: BrowserApp.selectedTab.id });
 
-    SimpleTest.registerCleanupFunction(function() {
-      BrowserApp.closeTab(BrowserApp.getTabForBrowser(browserBlank));
-      BrowserApp.closeTab(BrowserApp.getTabForBrowser(browserTest));
-    });
-
-    // Add a new tab with a blank page
-    browserBlank = BrowserApp.addTab("about:blank", { selected: true, parentId: BrowserApp.selectedTab.id }).browser;
-
-    // Now, let's force the target browser to be added
-    browserTest = BrowserApp.selectOrAddTab(kTestPage, { selected: true, parentId: BrowserApp.selectedTab.id }).browser;
-    yield promiseBrowserEvent(browserTest, "DOMContentLoaded");
+    // Now, let's force the target tab to be added
+    tabTest = BrowserApp.selectOrAddTab(kTestPage, { selected: true, parentId: BrowserApp.selectedTab.id });
+    yield promiseBrowserEvent(tabTest.browser, "DOMContentLoaded");
 
     // Check that basic_article is now selected
-    is(BrowserApp.selectedBrowser, browserTest, "Target browser is selected after being added.");
+    is(BrowserApp.selectedBrowser, tabTest.browser, "Target tab is selected after being added.");
 
     // Switch back to about:blank
-    BrowserApp.selectTab(BrowserApp.getTabForBrowser(browserBlank));
+    BrowserApp.selectTab(tabBlank);
     yield promiseTabEvent(BrowserApp.deck, "TabSelect");
 
     // Check that about:blank is selected
-    is(BrowserApp.selectedBrowser, browserBlank, "about:blank is selected.");
+    is(BrowserApp.selectedTab, tabBlank, "about:blank is selected.");
 
     // Use selectOrAddTab to select the existing tab
-    BrowserApp.selectOrAddTab(kTestPage, { selected: true, parentId: BrowserApp.selectedTab.id }).browser;
+    BrowserApp.selectOrAddTab(kTestPage, { selected: true, parentId: BrowserApp.selectedTab.id });
     yield promiseTabEvent(BrowserApp.deck, "TabSelect");
 
     // Check that basic_article is now selected
-    is(BrowserApp.selectedBrowser, browserTest, "Target browser is selected.");
+    is(BrowserApp.selectedTab, tabTest, "Target tab is selected.");
 
     // Switch back to about:blank
-    BrowserApp.selectTab(BrowserApp.getTabForBrowser(browserBlank));
+    BrowserApp.selectTab(tabBlank);
     yield promiseTabEvent(BrowserApp.deck, "TabSelect");
 
     // Check that about:blank is selected
-    is(BrowserApp.selectedBrowser, browserBlank, "about:blank is selected.");
+    is(BrowserApp.selectedTab, tabBlank, "about:blank is selected.");
 
     // Use selectOrAddTab to select the existing tab using the startsWith flag
-    BrowserApp.selectOrAddTab(kTestPage, { selected: true, parentId: BrowserApp.selectedTab.id }, { startsWith: kTestPage }).browser;
+    BrowserApp.selectOrAddTab(kTestPage, { selected: true, parentId: BrowserApp.selectedTab.id }, { startsWith: kTestPage });
     yield promiseTabEvent(BrowserApp.deck, "TabSelect");
 
     // Check that basic_article is now selected
-    is(BrowserApp.selectedBrowser, browserTest, "Target browser is selected.");
+    is(BrowserApp.selectedTab, tabTest, "Target tab is selected.");
+
+    cleanupTabs();
   });
 
   </script>
 </head>
 <body>
 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1216047">Mozilla Bug 1216047</a>
 <p id="display"></p>
 <div id="content" style="display: none">