Index: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java |
index 85f5a65bc85bf78cee4009a29482dec305e01974..d166ee2425e185534cd8c24881bb4708e87770eb 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java |
@@ -9,6 +9,7 @@ import org.chromium.base.ObserverList; |
import org.chromium.base.TraceEvent; |
import org.chromium.chrome.browser.ChromeTabbedActivity; |
import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; |
+import org.chromium.chrome.browser.ntp.RecentlyClosedBridge; |
import org.chromium.chrome.browser.partnercustomizations.HomepageManager; |
import org.chromium.chrome.browser.tab.Tab; |
import org.chromium.chrome.browser.tabmodel.TabCreatorManager.TabCreator; |
@@ -45,6 +46,7 @@ public class TabModelImpl extends TabModelJniBridge { |
private final TabPersistentStore mTabSaver; |
private final TabModelDelegate mModelDelegate; |
private final ObserverList<TabModelObserver> mObservers; |
+ private RecentlyClosedBridge mRecentlyClosedBridge; |
// Undo State Tracking ------------------------------------------------------------------------- |
@@ -81,6 +83,7 @@ public class TabModelImpl extends TabModelJniBridge { |
mModelDelegate = modelDelegate; |
mIsUndoSupported = supportUndo; |
mObservers = new ObserverList<TabModelObserver>(); |
+ mRecentlyClosedBridge = new RecentlyClosedBridge(getProfile()); |
} |
@Override |
@@ -99,7 +102,7 @@ public class TabModelImpl extends TabModelJniBridge { |
mRewoundList.destroy(); |
mTabs.clear(); |
mObservers.clear(); |
- |
+ mRecentlyClosedBridge.destroy(); |
super.destroy(); |
} |
@@ -721,7 +724,7 @@ public class TabModelImpl extends TabModelJniBridge { |
protected boolean createTabWithWebContents(Tab parent, boolean incognito, |
WebContents webContents, int parentId) { |
return getTabCreator(incognito).createTabWithWebContents(parent, webContents, parentId, |
- TabLaunchType.FROM_LONGPRESS_BACKGROUND); |
+ TabLaunchType.FROM_LONGPRESS_FOREGROUND); |
Theresa
2016/06/29 23:53:29
I suspect that changing this affects other places
xingliu
2016/06/30 05:43:55
Used to investigate this a little bit, this change
Theresa
2016/06/30 20:50:24
If you go to "Recent tabs", long press on a recent
|
} |
@Override |
@@ -738,4 +741,23 @@ public class TabModelImpl extends TabModelJniBridge { |
protected boolean isSessionRestoreInProgress() { |
return mModelDelegate.isSessionRestoreInProgress(); |
} |
+ |
+ /** |
+ * Open most recent closed tab. first check if android tab model has pending closures. |
+ * if not, use native code to fetch data from tab restore service. |
+ */ |
+ @Override |
+ public void openRecentClosedTab() { |
+ // recover tab from rewind list in java, same as the undo snackbar. |
Theresa
2016/06/29 23:53:29
nit: use proper sentence capitalization/punctuatio
xingliu
2016/06/30 05:43:55
Done.
|
+ // {@link UndoBarController}. |
+ if (mRewoundList.hasPendingClosures()) { |
+ Tab tab = mRewoundList.getNextRewindableTab(); |
+ if (tab == null) return; |
+ cancelTabClosure(tab.getId()); |
+ return; |
+ } |
+ |
+ // if no pending closure in java, open it from tab restore service in native code. |
Theresa
2016/06/29 23:53:29
nit: "If there are no pending closures in Java, ..
xingliu
2016/06/30 05:43:55
Done.
|
+ mRecentlyClosedBridge.openRecentClosedTab(); |
+ } |
} |