diff options
Diffstat (limited to 'chrome')
3 files changed, 28 insertions, 6 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/RecentlyClosedBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/RecentlyClosedBridge.java index ce6bdb0..d3a33e6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/RecentlyClosedBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/RecentlyClosedBridge.java @@ -6,6 +6,7 @@ package org.chromium.chrome.browser; import org.chromium.base.CalledByNative; import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.ui.WindowOpenDisposition; import java.util.ArrayList; import java.util.List; @@ -94,6 +95,7 @@ public class RecentlyClosedBridge { return received ? tabs : null; } + // TODO(newt): delete this once all callers are using the new method below. /** * Opens a recently closed tab in the current tab. * @@ -102,7 +104,23 @@ public class RecentlyClosedBridge { * @return Whether the tab was successfully opened. */ public boolean openRecentlyClosedTab(Tab tab, RecentlyClosedTab recentTab) { - return nativeOpenRecentlyClosedTab(mNativeRecentlyClosedTabsBridge, tab, recentTab.id); + return openRecentlyClosedTab(tab, recentTab, WindowOpenDisposition.CURRENT_TAB); + } + + /** + * Opens a recently closed tab in the current tab or a new tab. If opened in the current tab, + * the current tab's entire history is replaced. + * + * @param tab The current Tab. + * @param recentTab The RecentlyClosedTab to open. + * @param windowOpenDisposition The WindowOpenDisposition value specifying whether to open in + * the current tab or a new tab. + * @return Whether the tab was successfully opened. + */ + public boolean openRecentlyClosedTab(Tab tab, RecentlyClosedTab recentTab, + int windowOpenDisposition) { + return nativeOpenRecentlyClosedTab(mNativeRecentlyClosedTabsBridge, tab, recentTab.id, + windowOpenDisposition); } /** @@ -118,7 +136,7 @@ public class RecentlyClosedBridge { long nativeRecentlyClosedTabsBridge, RecentlyClosedCallback callback); private native boolean nativeGetRecentlyClosedTabs( long nativeRecentlyClosedTabsBridge, List<RecentlyClosedTab> tabs, int maxTabCount); - private native boolean nativeOpenRecentlyClosedTab( - long nativeRecentlyClosedTabsBridge, Tab tab, int recentTabId); + private native boolean nativeOpenRecentlyClosedTab(long nativeRecentlyClosedTabsBridge, + Tab tab, int recentTabId, int windowOpenDisposition); private native void nativeClearRecentlyClosedTabs(long nativeRecentlyClosedTabsBridge); } diff --git a/chrome/browser/android/recently_closed_tabs_bridge.cc b/chrome/browser/android/recently_closed_tabs_bridge.cc index aa12f0f..681ea14 100644 --- a/chrome/browser/android/recently_closed_tabs_bridge.cc +++ b/chrome/browser/android/recently_closed_tabs_bridge.cc @@ -89,7 +89,8 @@ jboolean RecentlyClosedTabsBridge::GetRecentlyClosedTabs(JNIEnv* env, jboolean RecentlyClosedTabsBridge::OpenRecentlyClosedTab(JNIEnv* env, jobject obj, jobject jtab, - jint recent_tab_id) { + jint recent_tab_id, + jint j_disposition) { if (!tab_restore_service_) return false; @@ -112,9 +113,11 @@ jboolean RecentlyClosedTabsBridge::OpenRecentlyClosedTab(JNIEnv* env, session_tab.current_navigation_index = tab_entry->current_navigation_index; session_tab.navigations = tab_entry->navigations; + WindowOpenDisposition disposition = + static_cast<WindowOpenDisposition>(j_disposition); SessionRestore::RestoreForeignSessionTab(web_contents, session_tab, - CURRENT_TAB); + disposition); return true; } diff --git a/chrome/browser/android/recently_closed_tabs_bridge.h b/chrome/browser/android/recently_closed_tabs_bridge.h index a67d875..8bb04e8 100644 --- a/chrome/browser/android/recently_closed_tabs_bridge.h +++ b/chrome/browser/android/recently_closed_tabs_bridge.h @@ -28,7 +28,8 @@ class RecentlyClosedTabsBridge : public TabRestoreServiceObserver { jboolean OpenRecentlyClosedTab(JNIEnv* env, jobject obj, jobject jtab, - jint tab_id); + jint tab_id, + jint j_disposition); void ClearRecentlyClosedTabs(JNIEnv* env, jobject obj); // Observer callback for TabRestoreServiceObserver. Notifies the registered |