Index: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelBase.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelBase.java |
index 88a50b21171c0ce89cf76a0454a3e8ee3106495f..c51ea96a7b516579b2452cc18c5269787ee28676 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelBase.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelBase.java |
@@ -166,7 +166,7 @@ public abstract class TabModelBase extends TabModelJniBridge { |
@Override |
public boolean closeTab(Tab tab) { |
- return closeTab(tab, true, false, false); |
+ return closeTab(tab, true, false, false, false); |
} |
private Tab findTabInAllTabModels(int tabId) { |
@@ -222,7 +222,7 @@ public abstract class TabModelBase extends TabModelJniBridge { |
} |
@Override |
- public void cancelTabClosure(int tabId) { |
+ public void cancelTabClosure(int tabId, boolean isHidden) { |
Tab tab = mRewoundList.getPendingRewindTab(tabId); |
if (tab == null) return; |
@@ -253,7 +253,7 @@ public abstract class TabModelBase extends TabModelJniBridge { |
// If we're the active model call setIndex to actually select this tab, otherwise just set |
// mIndex but don't kick off everything that happens when calling setIndex(). |
- if (activeModel) { |
+ if (!isHidden && activeModel) { |
TabModelUtils.setIndex(this, insertIndex); |
} else { |
mIndex = insertIndex; |
@@ -288,8 +288,9 @@ public abstract class TabModelBase extends TabModelJniBridge { |
} |
@Override |
- public boolean closeTab(Tab tabToClose, boolean animate, boolean uponExit, boolean canUndo) { |
- return closeTab(tabToClose, animate, uponExit, canUndo, canUndo); |
+ public boolean closeTab(Tab tabToClose, boolean animate, boolean uponExit, boolean canUndo, |
+ boolean closingAll) { |
+ return closeTab(tabToClose, animate, uponExit, canUndo, canUndo, closingAll); |
} |
/** |
@@ -300,8 +301,8 @@ public abstract class TabModelBase extends TabModelJniBridge { |
* closure. Observers will still be notified of a committed/cancelled closure |
* even if they are not notified of a pending closure to start with. |
*/ |
- private boolean closeTab(Tab tabToClose, boolean animate, boolean uponExit, |
- boolean canUndo, boolean notify) { |
+ private boolean closeTab(Tab tabToClose, boolean animate, boolean uponExit, boolean canUndo, |
+ boolean notify, boolean closingAll) { |
if (tabToClose == null) { |
assert false : "Tab is null!"; |
return false; |
@@ -314,7 +315,7 @@ public abstract class TabModelBase extends TabModelJniBridge { |
canUndo &= supportsPendingClosures(); |
- startTabClosure(tabToClose, animate, uponExit, canUndo); |
+ startTabClosure(tabToClose, animate, uponExit, canUndo, closingAll); |
if (notify && canUndo) { |
for (TabModelObserver obs : mObservers) obs.tabPendingClosure(tabToClose); |
} |
@@ -354,7 +355,7 @@ public abstract class TabModelBase extends TabModelJniBridge { |
while (getCount() > 0) { |
Ted C
2015/09/02 20:30:56
instead of requiring a bunch of calling sites to c
Jaekyun Seok (inactive)
2015/09/03 00:27:58
Done.
|
Tab tab = getTabAt(0); |
closedTabs.add(tab.getId()); |
- closeTab(tab, animate, uponExit, canUndo, false); |
+ closeTab(tab, animate, uponExit, canUndo, true); |
} |
if (!uponExit && canUndo && supportsPendingClosures()) { |
@@ -433,8 +434,10 @@ public abstract class TabModelBase extends TabModelJniBridge { |
* and {@link #supportsPendingClosures()} is {@code true}, |
* {@link #commitTabClosure(int)} or {@link #commitAllTabClosures()} needs to be |
* called to actually delete and clean up {@code tab}. |
+ * @param closingAll Whether this close is due to closing all or not. |
*/ |
- private void startTabClosure(Tab tab, boolean animate, boolean uponExit, boolean canUndo) { |
+ private void startTabClosure( |
+ Tab tab, boolean animate, boolean uponExit, boolean canUndo, boolean closingAll) { |
final int closingTabId = tab.getId(); |
final int closingTabIndex = indexOf(tab); |
@@ -462,7 +465,7 @@ public abstract class TabModelBase extends TabModelJniBridge { |
int nextTabIndex = nextTab == null ? INVALID_TAB_INDEX : TabModelUtils.getTabIndexById( |
mModelDelegate.getModel(nextIsIncognito), nextTabId); |
- if (nextTab != currentTab) { |
+ if (!closingAll && nextTab != currentTab) { |
if (nextIsIncognito != isIncognito()) mIndex = indexOf(adjacentTab); |
TabModel nextModel = mModelDelegate.getModel(nextIsIncognito); |
@@ -470,6 +473,7 @@ public abstract class TabModelBase extends TabModelJniBridge { |
uponExit ? TabSelectionType.FROM_EXIT : TabSelectionType.FROM_CLOSE); |
} else { |
mIndex = nextTabIndex; |
+ if (closingAll) tab.hide(); |
} |
if (!canUndo) mRewoundList.resetRewoundState(); |