| Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentlyClosedBridge.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentlyClosedBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentlyClosedBridge.java
|
| index a760b2ef9883647ba7d067f82d4f7f4945305cfe..4ef0202e3c132fa006cee80bf8728b5ff171d0e1 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentlyClosedBridge.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentlyClosedBridge.java
|
| @@ -4,6 +4,8 @@
|
|
|
| package org.chromium.chrome.browser.ntp;
|
|
|
| +import android.support.annotation.Nullable;
|
| +
|
| import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.chrome.browser.profiles.Profile;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| @@ -14,37 +16,11 @@ import java.util.List;
|
| /**
|
| * This class allows Java code to get and clear the list of recently closed tabs.
|
| */
|
| -public class RecentlyClosedBridge {
|
| - private long mNativeRecentlyClosedTabsBridge;
|
| +public class RecentlyClosedBridge implements RecentlyClosedTabManager {
|
| + private long mNativeBridge;
|
|
|
| - /**
|
| - * Callback interface for getting notified when the list of recently closed tabs is updated.
|
| - */
|
| - interface RecentlyClosedCallback {
|
| - /**
|
| - * This method will be called every time the list of recently closed tabs is updated.
|
| - *
|
| - * It's a good place to call {@link RecentlyClosedBridge#getRecentlyClosedTabs} to get the
|
| - * updated list of tabs.
|
| - */
|
| - @CalledByNative("RecentlyClosedCallback")
|
| - void onUpdated();
|
| - }
|
| -
|
| - /**
|
| - * Represents a recently closed tab.
|
| - */
|
| - static class RecentlyClosedTab {
|
| - public final int id;
|
| - public final String title;
|
| - public final String url;
|
| -
|
| - private RecentlyClosedTab(int id, String title, String url) {
|
| - this.id = id;
|
| - this.title = title;
|
| - this.url = url;
|
| - }
|
| - }
|
| + @Nullable
|
| + private Runnable mTabsUpdatedRunnable;
|
|
|
| @CalledByNative
|
| private static void pushTab(
|
| @@ -58,72 +34,55 @@ public class RecentlyClosedBridge {
|
| * @param profile The Profile whose recently closed tabs will be queried.
|
| */
|
| public RecentlyClosedBridge(Profile profile) {
|
| - mNativeRecentlyClosedTabsBridge = nativeInit(profile);
|
| + mNativeBridge = nativeInit(profile);
|
| }
|
|
|
| - /**
|
| - * Cleans up the C++ side of this class. This instance must not be used after calling destroy().
|
| - */
|
| + @Override
|
| public void destroy() {
|
| - assert mNativeRecentlyClosedTabsBridge != 0;
|
| - nativeDestroy(mNativeRecentlyClosedTabsBridge);
|
| - mNativeRecentlyClosedTabsBridge = 0;
|
| + assert mNativeBridge != 0;
|
| + nativeDestroy(mNativeBridge);
|
| + mNativeBridge = 0;
|
| + mTabsUpdatedRunnable = null;
|
| }
|
|
|
| - /**
|
| - * Sets the callback to be called whenever the list of recently closed tabs changes.
|
| - * @param callback The RecentlyClosedCallback to be notified, or null.
|
| - */
|
| - void setRecentlyClosedCallback(RecentlyClosedCallback callback) {
|
| - nativeSetRecentlyClosedCallback(mNativeRecentlyClosedTabsBridge, callback);
|
| + @Override
|
| + public void setTabsUpdatedRunnable(@Nullable Runnable runnable) {
|
| + mTabsUpdatedRunnable = runnable;
|
| }
|
|
|
| - /**
|
| - * @param maxTabCount The maximum number of recently closed tabs to return.
|
| - * @return The list of recently closed tabs, with up to maxTabCount elements.
|
| - */
|
| - List<RecentlyClosedTab> getRecentlyClosedTabs(int maxTabCount) {
|
| + @Override
|
| + public List<RecentlyClosedTab> getRecentlyClosedTabs(int maxTabCount) {
|
| List<RecentlyClosedTab> tabs = new ArrayList<RecentlyClosedTab>();
|
| - boolean received = nativeGetRecentlyClosedTabs(mNativeRecentlyClosedTabsBridge, tabs,
|
| - maxTabCount);
|
| + boolean received = nativeGetRecentlyClosedTabs(mNativeBridge, tabs, maxTabCount);
|
| return received ? tabs : null;
|
| }
|
|
|
| - /**
|
| - * 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.
|
| - */
|
| - boolean openRecentlyClosedTab(Tab tab, RecentlyClosedTab recentTab,
|
| - int windowOpenDisposition) {
|
| - return nativeOpenRecentlyClosedTab(mNativeRecentlyClosedTabsBridge, tab, recentTab.id,
|
| - windowOpenDisposition);
|
| + @Override
|
| + public boolean openRecentlyClosedTab(
|
| + Tab tab, RecentlyClosedTab recentTab, int windowOpenDisposition) {
|
| + return nativeOpenRecentlyClosedTab(mNativeBridge, tab, recentTab.id, windowOpenDisposition);
|
| }
|
|
|
| - /**
|
| - * Opens the most recently closed tab in a new tab by reading data from the native tab restore
|
| - * service.
|
| - */
|
| + @Override
|
| public void openRecentlyClosedTab() {
|
| - nativeOpenMostRecentlyClosedTab(mNativeRecentlyClosedTabsBridge);
|
| + nativeOpenMostRecentlyClosedTab(mNativeBridge);
|
| + }
|
| +
|
| + @Override
|
| + public void clearRecentlyClosedTabs() {
|
| + nativeClearRecentlyClosedTabs(mNativeBridge);
|
| }
|
|
|
| /**
|
| - * Clears all recently closed tabs.
|
| + * This method will be called every time the list of recently closed tabs is updated.
|
| */
|
| - void clearRecentlyClosedTabs() {
|
| - nativeClearRecentlyClosedTabs(mNativeRecentlyClosedTabsBridge);
|
| + @CalledByNative
|
| + private void onUpdated() {
|
| + if (mTabsUpdatedRunnable != null) mTabsUpdatedRunnable.run();
|
| }
|
|
|
| private native long nativeInit(Profile profile);
|
| private native void nativeDestroy(long nativeRecentlyClosedTabsBridge);
|
| - private native void nativeSetRecentlyClosedCallback(
|
| - long nativeRecentlyClosedTabsBridge, RecentlyClosedCallback callback);
|
| private native boolean nativeGetRecentlyClosedTabs(
|
| long nativeRecentlyClosedTabsBridge, List<RecentlyClosedTab> tabs, int maxTabCount);
|
| private native boolean nativeOpenRecentlyClosedTab(long nativeRecentlyClosedTabsBridge,
|
|
|