summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
Diffstat (limited to 'chrome')
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/RecentlyClosedBridge.java24
-rw-r--r--chrome/browser/android/recently_closed_tabs_bridge.cc7
-rw-r--r--chrome/browser/android/recently_closed_tabs_bridge.h3
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