mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-12 22:28:59 +02:00
- `Array.map` becomes `Array.from` - Array copying via `Array.slice` becomes `Array.from`. - `Array.forEach` that did not rely on closures becomes `for`-`of` loops. - Anything else: `Array.X` becomes `Array.prototype.X`. Complex cases: dom/bindings/test/TestInterfaceJS.js and dom/bindings/test/test_exception_options_from_jsimplemented.html use `Array.indexOf` to generate an error with a specific error message. Switched to `Array.prototype.forEach` to generate the same error. js/src/jit-test/tests/basic/exception-column-number.js In this test `Array.indexOf()` is used to generate an error. Since the exact message doesn't matter, I switched to `Array.from()`. Intentionally not changed: editor/libeditor/tests/browserscope/lib/richtext/richtext/js/range.js Did not modify because this is 3rd-party code and the code uses feature detection as a fall back when Array generics are not used. testing/talos/talos/tests/dromaeo/lib/mootools.js Did not modify because mootools adds the `Array.slice` method to the `Array` object. Not changed because they check the implementation of Array generics: js/src/jit-test/tests/basic/arrayNatives.js js/src/jit-test/tests/basic/bug563243.js js/src/jit-test/tests/basic/bug618853.js js/src/jit-test/tests/basic/bug830967.js js/src/jit-test/tests/jaeger/recompile/bug656753.js js/src/jit-test/tests/self-hosting/alternate-static-and-instance-array-extras.js js/src/tests/non262/Array/generics.js js/src/tests/non262/Array/regress-415540.js js/src/tests/non262/extensions/regress-355497.js js/src/tests/non262/extensions/typedarray-set-neutering.js Depends on D27802 Differential Revision: https://phabricator.services.mozilla.com/D27803 --HG-- extra : moz-landing-system : lando
36 lines
1.6 KiB
JavaScript
36 lines
1.6 KiB
JavaScript
function test() {
|
|
var tab1 = gBrowser.selectedTab;
|
|
var tab2 = BrowserTestUtils.addTab(gBrowser);
|
|
var childTab1;
|
|
var childTab2;
|
|
|
|
childTab1 = BrowserTestUtils.addTab(gBrowser, "about:blank", { relatedToCurrent: true });
|
|
gBrowser.selectedTab = childTab1;
|
|
gBrowser.removeTab(gBrowser.selectedTab, { skipPermitUnload: true });
|
|
is(idx(gBrowser.selectedTab), idx(tab1),
|
|
"closing a tab next to its parent selects the parent");
|
|
|
|
childTab1 = BrowserTestUtils.addTab(gBrowser, "about:blank", { relatedToCurrent: true });
|
|
gBrowser.selectedTab = tab2;
|
|
gBrowser.selectedTab = childTab1;
|
|
gBrowser.removeTab(gBrowser.selectedTab, { skipPermitUnload: true });
|
|
is(idx(gBrowser.selectedTab), idx(tab2),
|
|
"closing a tab next to its parent doesn't select the parent if another tab had been selected ad interim");
|
|
|
|
gBrowser.selectedTab = tab1;
|
|
childTab1 = BrowserTestUtils.addTab(gBrowser, "about:blank", { relatedToCurrent: true });
|
|
childTab2 = BrowserTestUtils.addTab(gBrowser, "about:blank", { relatedToCurrent: true });
|
|
gBrowser.selectedTab = childTab1;
|
|
gBrowser.removeTab(gBrowser.selectedTab, { skipPermitUnload: true });
|
|
is(idx(gBrowser.selectedTab), idx(childTab2),
|
|
"closing a tab next to its parent selects the next tab with the same parent");
|
|
gBrowser.removeTab(gBrowser.selectedTab, { skipPermitUnload: true });
|
|
is(idx(gBrowser.selectedTab), idx(tab2),
|
|
"closing the last tab in a set of child tabs doesn't go back to the parent");
|
|
|
|
gBrowser.removeTab(tab2, { skipPermitUnload: true });
|
|
}
|
|
|
|
function idx(tab) {
|
|
return Array.prototype.indexOf.call(gBrowser.tabs, tab);
|
|
}
|