Backed out changeset ff49c94ed1d2 (bug 1481055) for bc failures on browser_multiselect_tabs_using_keyboard.js . CLOSED TREE

This commit is contained in:
Narcis Beleuzu 2019-07-18 23:10:58 +03:00
parent ff1972d3ae
commit a30f010301
8 changed files with 39 additions and 82 deletions

View File

@ -332,20 +332,16 @@
gBrowser.selectedTab = lastSelectedTab;
// Make sure selection is cleared when tab-switch doesn't happen.
gBrowser.clearMultiSelectedTabs({ isLastMultiSelectChange: false });
gBrowser.clearMultiSelectedTabs(false);
}
gBrowser.addRangeToMultiSelectedTabs(lastSelectedTab, this);
} else if (accelKey) {
// Ctrl (Cmd for mac) key is pressed
eventMaySelectTab = false;
if (this.multiselected) {
gBrowser.removeFromMultiSelectedTabs(this, {
isLastMultiSelectChange: true,
});
gBrowser.removeFromMultiSelectedTabs(this, true);
} else if (this != gBrowser.selectedTab) {
gBrowser.addToMultiSelectedTabs(this, {
isLastMultiSelectChange: true,
});
gBrowser.addToMultiSelectedTabs(this, false);
gBrowser.lastMultiSelectedTab = this;
}
} else if (!this.selected && this.multiselected) {
@ -386,9 +382,9 @@
// Force positional attributes to update when the
// target (of the click) is the "active" tab.
let isLastMultiSelectChange = gBrowser.selectedTab == this;
let updatePositionalAttr = gBrowser.selectedTab == this;
gBrowser.clearMultiSelectedTabs({ isLastMultiSelectChange });
gBrowser.clearMultiSelectedTabs(updatePositionalAttr);
}
if (

View File

@ -342,13 +342,13 @@
case KeyEvent.DOM_VK_SPACE:
if (visibleTabs[lastFocusedTabIndex].multiselected) {
gBrowser.removeFromMultiSelectedTabs(
visibleTabs[lastFocusedTabIndex],
{ isLastMultiSelectChange: false }
visibleTabs[lastFocusedTabIndex]
);
} else {
gBrowser.addToMultiSelectedTabs(visibleTabs[lastFocusedTabIndex], {
isLastMultiSelectChange: false,
});
gBrowser.addToMultiSelectedTabs(
visibleTabs[lastFocusedTabIndex],
false
);
}
break;
default:

View File

@ -1201,7 +1201,7 @@
this._startMultiSelectChange();
this._multiSelectChangeSelected = true;
this.clearMultiSelectedTabs({ isLastMultiSelectChange: true });
this.clearMultiSelectedTabs(true);
if (oldBrowser != newBrowser && oldBrowser.getInPermitUnload) {
oldBrowser.getInPermitUnload(inPermitUnload => {
@ -4364,7 +4364,7 @@
return SessionStore.duplicateTab(window, aTab, 0, aRestoreTabImmediately);
},
addToMultiSelectedTabs(aTab, { isLastMultiSelectChange = false } = {}) {
addToMultiSelectedTabs(aTab, multiSelectMayChangeMore) {
if (aTab.multiselected) {
return;
}
@ -4379,12 +4379,10 @@
this._multiSelectChangeAdditions.add(aTab);
}
if (isLastMultiSelectChange) {
if (!multiSelectMayChangeMore) {
let { selectedTab } = this;
if (!selectedTab.multiselected) {
this.addToMultiSelectedTabs(selectedTab, {
isLastMultiSelectChange: false,
});
this.addToMultiSelectedTabs(selectedTab, true);
}
this.tabContainer._setPositionalAttributes();
}
@ -4408,17 +4406,12 @@
: [indexOfTab2, indexOfTab1];
for (let i = lowerIndex; i <= higherIndex; i++) {
this.addToMultiSelectedTabs(tabs[i], {
isLastMultiSelectChange: false,
});
this.addToMultiSelectedTabs(tabs[i], true);
}
this.tabContainer._setPositionalAttributes();
},
removeFromMultiSelectedTabs(
aTab,
{ isLastMultiSelectChange = false } = {}
) {
removeFromMultiSelectedTabs(aTab, isLastMultiSelectChange) {
if (!aTab.multiselected) {
return;
}
@ -4440,7 +4433,7 @@
}
},
clearMultiSelectedTabs({ isLastMultiSelectChange = false } = {}) {
clearMultiSelectedTabs(isLastMultiSelectChange) {
if (this._clearMultiSelectionLocked) {
if (this._clearMultiSelectionLockedOnce) {
this._clearMultiSelectionLockedOnce = false;
@ -4454,9 +4447,7 @@
}
for (let tab of this.selectedTabs) {
this.removeFromMultiSelectedTabs(tab, {
isLastMultiSelectChange: false,
});
this.removeFromMultiSelectedTabs(tab, false);
}
this._lastMultiSelectedTabRef = null;
if (isLastMultiSelectChange) {
@ -4517,7 +4508,7 @@
*/
avoidSingleSelectedTab() {
if (this.multiSelectedTabsCount == 1) {
this.clearMultiSelectedTabs({ isLastMultiSelectChange: false });
this.clearMultiSelectedTabs();
}
},
@ -4544,13 +4535,11 @@
},
set selectedTabs(tabs) {
this.clearMultiSelectedTabs({ isLastMultiSelectChange: false });
this.clearMultiSelectedTabs(false);
this.selectedTab = tabs[0];
if (tabs.length > 1) {
for (let tab of tabs) {
this.addToMultiSelectedTabs(tab, {
isLastMultiSelectChange: false,
});
this.addToMultiSelectedTabs(tab, true);
}
}
this.tabContainer._setPositionalAttributes();

View File

@ -714,7 +714,7 @@ add_task(async function sendToDevice_title() {
// Add the other tab to the selection.
gBrowser.addToMultiSelectedTabs(
gBrowser.getTabForBrowser(otherBrowser),
{ isLastMultiSelectChange: true }
false
);
// Open the panel again. Now the action's title should be "Send 2 Tabs to

View File

@ -51,7 +51,7 @@ add_task(async function withAMultiSelectedTab() {
is(gBrowser.multiSelectedTabsCount, 2, "Two multiselected tabs");
is(gBrowser.selectedTab, initialTab, "InitialTab is still the active tab");
gBrowser.clearMultiSelectedTabs({ isLastMultiSelectChange: false });
gBrowser.clearMultiSelectedTabs(false);
BrowserTestUtils.removeTab(tab1);
BrowserTestUtils.removeTab(tab4);
});

View File

@ -142,85 +142,63 @@ add_task(async function clickWithPrefSet() {
"Unmultiselection tab with removeFromMultiSelectedTabs should trigger event"
);
await expectEvent(async () => {
gBrowser.removeFromMultiSelectedTabs(tab3, {
isLastMultiSelectChange: true,
});
gBrowser.removeFromMultiSelectedTabs(tab3, true);
}, [tab1, tab2]);
info("Expect no event if the tab is not multiselected");
await expectNoEvent(async () => {
gBrowser.removeFromMultiSelectedTabs(tab3, {
isLastMultiSelectChange: true,
});
gBrowser.removeFromMultiSelectedTabs(tab3, true);
}, [tab1, tab2]);
info(
"Clearing multiselection with clearMultiSelectedTabs should trigger event"
);
await expectEvent(async () => {
gBrowser.clearMultiSelectedTabs(tab3, {
isLastMultiSelectChange: true,
});
gBrowser.clearMultiSelectedTabs(tab3, true);
}, [tab1]);
info("Expect no event if there is no multiselection to clear");
await expectNoEvent(async () => {
gBrowser.clearMultiSelectedTabs(tab3, {
isLastMultiSelectChange: true,
});
gBrowser.clearMultiSelectedTabs(tab3, true);
}, [tab1]);
info(
"Expect no event if clearMultiSelectedTabs counteracts addToMultiSelectedTabs"
);
await expectNoEvent(async () => {
gBrowser.addToMultiSelectedTabs(tab3, {
isLastMultiSelectChange: false,
});
gBrowser.clearMultiSelectedTabs({ isLastMultiSelectChange: true });
gBrowser.addToMultiSelectedTabs(tab3, true);
gBrowser.clearMultiSelectedTabs(true);
}, [tab1]);
info(
"Multiselecting tab with gBrowser.addToMultiSelectedTabs should trigger event"
);
await expectEvent(async () => {
gBrowser.addToMultiSelectedTabs(tab2, {
isLastMultiSelectChange: true,
});
gBrowser.addToMultiSelectedTabs(tab2, false);
}, [tab1, tab2]);
info(
"Expect no event if addToMultiSelectedTabs counteracts clearMultiSelectedTabs"
);
await expectNoEvent(async () => {
gBrowser.clearMultiSelectedTabs({ isLastMultiSelectChange: false });
gBrowser.addToMultiSelectedTabs(tab2, {
isLastMultiSelectChange: true,
});
gBrowser.clearMultiSelectedTabs(false);
gBrowser.addToMultiSelectedTabs(tab2, false);
}, [tab1, tab2]);
info(
"Expect no event if removeFromMultiSelectedTabs counteracts addToMultiSelectedTabs"
);
await expectNoEvent(async () => {
gBrowser.addToMultiSelectedTabs(tab3, {
isLastMultiSelectChange: false,
});
gBrowser.removeFromMultiSelectedTabs(tab3, {
isLastMultiSelectChange: true,
});
gBrowser.addToMultiSelectedTabs(tab3, true);
gBrowser.removeFromMultiSelectedTabs(tab3, true);
}, [tab1, tab2]);
info(
"Expect no event if addToMultiSelectedTabs counteracts removeFromMultiSelectedTabs"
);
await expectNoEvent(async () => {
gBrowser.removeFromMultiSelectedTabs(tab2, {
isLastMultiSelectChange: false,
});
gBrowser.addToMultiSelectedTabs(tab2, {
isLastMultiSelectChange: true,
});
gBrowser.removeFromMultiSelectedTabs(tab2, false);
gBrowser.addToMultiSelectedTabs(tab2, false);
}, [tab1, tab2]);
info("Multiselection with addRangeToMultiSelectedTabs should trigger event");

View File

@ -829,9 +829,7 @@ this.tabs = class extends ExtensionAPI {
}
if (updateProperties.highlighted) {
if (!nativeTab.selected && !nativeTab.multiselected) {
tabbrowser.addToMultiSelectedTabs(nativeTab, {
isLastMultiSelectChange: true,
});
tabbrowser.addToMultiSelectedTabs(nativeTab, false);
// Select the highlighted tab unless active:false is provided.
// Note that Chrome selects it even in that case.
if (updateProperties.active !== false) {
@ -840,9 +838,7 @@ this.tabs = class extends ExtensionAPI {
}
}
} else {
tabbrowser.removeFromMultiSelectedTabs(nativeTab, {
isLastMultiSelectChange: true,
});
tabbrowser.removeFromMultiSelectedTabs(nativeTab, true);
}
}
if (updateProperties.muted !== null) {

View File

@ -95,9 +95,7 @@ add_task(async function test_movePendingTabToNewWindow() {
newWindowTabs[1].hasAttribute("pending"),
"Second tab in new window should still be pending"
);
newWindow.gBrowser.clearMultiSelectedTabs({
isLastMultiSelectChange: true,
});
newWindow.gBrowser.clearMultiSelectedTabs(true);
ok(
newWindowTabs.every(t => !t.multiselected),
"No multiselection should be present"