Bug 1356705 - Modernize browser_overflowScroll.js and move into the tabs/ testing directory. r?jaws
MozReview-Commit-ID: LA0XrKipEMG
--- a/browser/base/content/test/general/browser.ini
+++ b/browser/base/content/test/general/browser.ini
@@ -384,18 +384,16 @@ subsuite = clipboard
skip-if = os == "linux" && !debug # bug 1304273
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
[browser_feed_discovery.js]
support-files = feed_discovery.html
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
[browser_gZipOfflineChild.js]
support-files = test_offline_gzip.html gZipOfflineChild.cacheManifest gZipOfflineChild.cacheManifest^headers^ gZipOfflineChild.html gZipOfflineChild.html^headers^
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
-[browser_overflowScroll.js]
-# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
[browser_page_style_menu.js]
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
[browser_page_style_menu_update.js]
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
[browser_pinnedTabs.js]
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
[browser_plainTextLinks.js]
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
--- a/browser/base/content/test/tabs/browser.ini
+++ b/browser/base/content/test/tabs/browser.ini
@@ -13,12 +13,13 @@ skip-if = !e10s # Tab spinner is e10s on
[browser_tabSwitchPrintPreview.js]
skip-if = os == 'mac'
[browser_navigatePinnedTab.js]
[browser_new_file_whitelisted_http_tab.js]
skip-if = !e10s # Test only relevant for e10s.
[browser_new_web_tab_in_file_process_pref.js]
skip-if = !e10s # Pref and test only relevant for e10s.
[browser_opened_file_tab_navigated_to_web.js]
+[browser_overflowScroll.js]
[browser_reload_deleted_file.js]
[browser_tabswitch_updatecommands.js]
[browser_viewsource_of_data_URI_in_file_process.js]
[browser_open_newtab_start_observer_notification.js]
rename from browser/base/content/test/general/browser_overflowScroll.js
rename to browser/base/content/test/tabs/browser_overflowScroll.js
--- a/browser/base/content/test/general/browser_overflowScroll.js
+++ b/browser/base/content/test/tabs/browser_overflowScroll.js
@@ -1,90 +1,84 @@
-var tabstrip = gBrowser.tabContainer.mTabstrip;
-var scrollbox = tabstrip._scrollbox;
-var originalSmoothScroll = tabstrip.smoothScroll;
-var tabs = gBrowser.tabs;
+"use strict";
+
+requestLongerTimeout(2);
-var rect = ele => ele.getBoundingClientRect();
-var width = ele => rect(ele).width;
-var height = ele => rect(ele).height;
-var left = ele => rect(ele).left;
-var right = ele => rect(ele).right;
-var isLeft = (ele, msg) => is(left(ele), left(scrollbox), msg);
-var isRight = (ele, msg) => is(right(ele), right(scrollbox), msg);
-var elementFromPoint = x => tabstrip._elementFromPoint(x);
-var nextLeftElement = () => elementFromPoint(left(scrollbox) - 1);
-var nextRightElement = () => elementFromPoint(right(scrollbox) + 1);
-var firstScrollable = () => tabs[gBrowser._numPinnedTabs];
+/**
+ * Tests that scrolling the tab strip via the scroll buttons scrolls the right
+ * amount in non-smoothscroll mode.
+ */
+add_task(async function() {
+ let tabstrip = gBrowser.tabContainer.mTabstrip;
+ let scrollbox = tabstrip._scrollbox;
+ let originalSmoothScroll = tabstrip.smoothScroll;
+ let tabs = gBrowser.tabs;
+ let tabMinWidth = parseInt(getComputedStyle(gBrowser.selectedTab, null).minWidth);
+
+ let rect = ele => ele.getBoundingClientRect();
+ let width = ele => rect(ele).width;
-var clickCenter = (ele, opts) => {
- EventUtils.synthesizeMouse(ele, Math.ceil(width(ele) / 2),
- Math.ceil(height(ele) / 2), opts);
-}
-
-function test() {
- requestLongerTimeout(2);
- waitForExplicitFinish();
+ let tabCountForOverflow = Math.ceil(width(tabstrip) / tabMinWidth * 3);
- // If the previous (or more) test finished with cleaning up the tabs,
- // there may be some pending animations. That can cause a failure of
- // this tests, so, we should test this in another stack.
- setTimeout(doTest, 0);
-}
+ let left = ele => rect(ele).left;
+ let right = ele => rect(ele).right;
+ let isLeft = (ele, msg) => is(left(ele), left(scrollbox), msg);
+ let isRight = (ele, msg) => is(right(ele), right(scrollbox), msg);
+ let elementFromPoint = x => tabstrip._elementFromPoint(x);
+ let nextLeftElement = () => elementFromPoint(left(scrollbox) - 1);
+ let nextRightElement = () => elementFromPoint(right(scrollbox) + 1);
+ let firstScrollable = () => tabs[gBrowser._numPinnedTabs];
-function doTest() {
tabstrip.smoothScroll = false;
+ registerCleanupFunction(() => {
+ tabstrip.smoothScroll = originalSmoothScroll;
+ });
- var tabMinWidth = parseInt(getComputedStyle(gBrowser.selectedTab, null).minWidth);
- var tabCountForOverflow = Math.ceil(width(tabstrip) / tabMinWidth * 3);
- while (tabs.length < tabCountForOverflow)
- BrowserTestUtils.addTab(gBrowser, "about:blank", {skipAnimation: true});
+ while (tabs.length < tabCountForOverflow) {
+ BrowserTestUtils.addTab(gBrowser, "about:blank", { skipAnimation: true });
+ }
+
gBrowser.pinTab(tabs[0]);
- tabstrip.addEventListener("overflow", runOverflowTests);
-}
+ await BrowserTestUtils.waitForCondition(() => {
+ return Array.from(gBrowser.tabs).every(tab => tab._fullyOpen);
+ });
-function runOverflowTests(aEvent) {
- if (aEvent.detail != 1 ||
- aEvent.target != tabstrip)
- return;
+ ok(!scrollbox.hasAttribute("notoverflowing"),
+ "Tab strip should be overflowing");
- tabstrip.removeEventListener("overflow", runOverflowTests);
-
- var upButton = tabstrip._scrollButtonUp;
- var downButton = tabstrip._scrollButtonDown;
- var element;
+ let upButton = tabstrip._scrollButtonUp;
+ let downButton = tabstrip._scrollButtonDown;
+ let element;
gBrowser.selectedTab = firstScrollable();
ok(left(scrollbox) <= left(firstScrollable()), "Selecting the first tab scrolls it into view " +
"(" + left(scrollbox) + " <= " + left(firstScrollable()) + ")");
element = nextRightElement();
EventUtils.synthesizeMouseAtCenter(downButton, {});
isRight(element, "Scrolled one tab to the right with a single click");
gBrowser.selectedTab = tabs[tabs.length - 1];
ok(right(gBrowser.selectedTab) <= right(scrollbox), "Selecting the last tab scrolls it into view " +
"(" + right(gBrowser.selectedTab) + " <= " + right(scrollbox) + ")");
element = nextLeftElement();
- clickCenter(upButton, {});
+ EventUtils.synthesizeMouseAtCenter(upButton, {});
isLeft(element, "Scrolled one tab to the left with a single click");
let elementPoint = left(scrollbox) - width(scrollbox);
element = elementFromPoint(elementPoint);
if (elementPoint == right(element)) {
element = element.nextSibling;
}
- clickCenter(upButton, {clickCount: 2});
+ EventUtils.synthesizeMouseAtCenter(upButton, {clickCount: 2});
isLeft(element, "Scrolled one page of tabs with a double click");
- clickCenter(upButton, {clickCount: 3});
+ EventUtils.synthesizeMouseAtCenter(upButton, {clickCount: 3});
var firstScrollableLeft = left(firstScrollable());
ok(left(scrollbox) <= firstScrollableLeft, "Scrolled to the start with a triple click " +
"(" + left(scrollbox) + " <= " + firstScrollableLeft + ")");
- while (tabs.length > 1)
- gBrowser.removeTab(tabs[0]);
-
- tabstrip.smoothScroll = originalSmoothScroll;
- finish();
-}
+ while (tabs.length > 1) {
+ await BrowserTestUtils.removeTab(gBrowser.tabs[0]);
+ }
+});