Chromium Code Reviews| 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(); |
| + } |
| } |