mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
Backed out changeset ff49c94ed1d2 (bug 1481055) for bc failures on browser_multiselect_tabs_using_keyboard.js . CLOSED TREE
This commit is contained in:
parent
ff1972d3ae
commit
a30f010301
@ -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 (
|
||||
|
@ -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:
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
});
|
||||
|
@ -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");
|
||||
|
@ -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) {
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user