Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java |
index cc198aa1f1790ae9708524048efefd1553ca4a68..6de8d3503bb4c83dfbb5a1306bb016bcfdf3b97e 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java |
@@ -10,6 +10,7 @@ import android.graphics.Bitmap; |
import org.chromium.base.ContextUtils; |
import org.chromium.base.ThreadUtils; |
+import org.chromium.base.VisibleForTesting; |
import org.chromium.chrome.browser.UrlConstants; |
import org.chromium.chrome.browser.favicon.FaviconHelper; |
import org.chromium.chrome.browser.favicon.FaviconHelper.FaviconImageCallback; |
@@ -18,8 +19,6 @@ import org.chromium.chrome.browser.metrics.StartupMetrics; |
import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSession; |
import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSessionCallback; |
import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSessionTab; |
-import org.chromium.chrome.browser.ntp.RecentlyClosedBridge.RecentlyClosedCallback; |
-import org.chromium.chrome.browser.ntp.RecentlyClosedBridge.RecentlyClosedTab; |
import org.chromium.chrome.browser.profiles.Profile; |
import org.chromium.chrome.browser.signin.SigninManager; |
import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver; |
@@ -51,6 +50,8 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta |
private static final String PREF_SIGNIN_PROMO_DECLINED = |
"recent_tabs_signin_promo_declined"; |
+ private static RecentlyClosedTabManager sRecentlyClosedTabManagerForTests; |
+ |
private final Profile mProfile; |
private final Tab mTab; |
private final Context mContext; |
@@ -60,7 +61,7 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta |
private List<ForeignSession> mForeignSessions; |
private List<RecentlyClosedTab> mRecentlyClosedTabs; |
private NewTabPagePrefs mNewTabPagePrefs; |
- private RecentlyClosedBridge mRecentlyClosedBridge; |
+ private RecentlyClosedTabManager mRecentlyClosedTabManager; |
private SigninManager mSignInManager; |
private UpdatedCallback mUpdatedCallback; |
private boolean mIsDestroyed; |
@@ -75,13 +76,23 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta |
public RecentTabsManager(Tab tab, Profile profile, Context context) { |
mProfile = profile; |
mTab = tab; |
- mForeignSessionHelper = buildForeignSessionHelper(mProfile); |
- mNewTabPagePrefs = buildNewTabPagePrefs(mProfile); |
- mFaviconHelper = buildFaviconHelper(); |
- mRecentlyClosedBridge = buildRecentlyClosedBridge(mProfile); |
+ mForeignSessionHelper = new ForeignSessionHelper(profile); |
+ mNewTabPagePrefs = new NewTabPagePrefs(profile); |
+ mFaviconHelper = new FaviconHelper(); |
+ mRecentlyClosedTabManager = sRecentlyClosedTabManagerForTests != null |
+ ? sRecentlyClosedTabManagerForTests |
+ : new RecentlyClosedBridge(profile); |
mSignInManager = SigninManager.get(context); |
mContext = context; |
+ mRecentlyClosedTabManager.setTabsUpdatedRunnable(new Runnable() { |
+ @Override |
+ public void run() { |
+ updateRecentlyClosedTabs(); |
+ postUpdate(); |
+ } |
+ }); |
+ |
updateRecentlyClosedTabs(); |
registerForForeignSessionUpdates(); |
updateForeignSessions(); |
@@ -104,8 +115,8 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta |
mFaviconHelper.destroy(); |
mFaviconHelper = null; |
- mRecentlyClosedBridge.destroy(); |
- mRecentlyClosedBridge = null; |
+ mRecentlyClosedTabManager.destroy(); |
+ mRecentlyClosedTabManager = null; |
mForeignSessionHelper.destroy(); |
mForeignSessionHelper = null; |
@@ -118,37 +129,6 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta |
InvalidationController.get(mContext).onRecentTabsPageClosed(); |
} |
- /** |
- * Returns true if destroy() has been called. |
- */ |
- public boolean isDestroyed() { |
- return mIsDestroyed; |
- } |
- |
- private static ForeignSessionHelper buildForeignSessionHelper(Profile profile) { |
- return new ForeignSessionHelper(profile); |
- } |
- |
- private static NewTabPagePrefs buildNewTabPagePrefs(Profile profile) { |
- return new NewTabPagePrefs(profile); |
- } |
- |
- private static FaviconHelper buildFaviconHelper() { |
- return new FaviconHelper(); |
- } |
- |
- private RecentlyClosedBridge buildRecentlyClosedBridge(Profile profile) { |
- RecentlyClosedBridge bridge = new RecentlyClosedBridge(profile); |
- bridge.setRecentlyClosedCallback(new RecentlyClosedCallback() { |
- @Override |
- public void onUpdated() { |
- updateRecentlyClosedTabs(); |
- postUpdate(); |
- } |
- }); |
- return bridge; |
- } |
- |
private void registerForForeignSessionUpdates() { |
mForeignSessionHelper.setOnForeignSessionCallback(new ForeignSessionCallback() { |
@Override |
@@ -165,8 +145,8 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta |
} |
private void updateRecentlyClosedTabs() { |
- mRecentlyClosedTabs = mRecentlyClosedBridge.getRecentlyClosedTabs( |
- RECENTLY_CLOSED_MAX_TAB_COUNT); |
+ mRecentlyClosedTabs = |
+ mRecentlyClosedTabManager.getRecentlyClosedTabs(RECENTLY_CLOSED_MAX_TAB_COUNT); |
} |
private void updateForeignSessions() { |
@@ -214,7 +194,7 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta |
public void openRecentlyClosedTab(RecentlyClosedTab tab, int windowDisposition) { |
if (mIsDestroyed) return; |
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_RECENTLY_CLOSED_ENTRY); |
- mRecentlyClosedBridge.openRecentlyClosedTab(mTab, tab, windowDisposition); |
+ mRecentlyClosedTabManager.openRecentlyClosedTab(mTab, tab, windowDisposition); |
} |
/** |
@@ -301,7 +281,7 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta |
return mNewTabPagePrefs.getRecentlyClosedTabsCollapsed(); |
} |
- /** |
+ /** |
* Remove Foreign session to display. Note that it might reappear during the next sync if the |
* session is not orphaned. |
* |
@@ -318,7 +298,7 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta |
*/ |
public void clearRecentlyClosedTabs() { |
if (mIsDestroyed) return; |
- mRecentlyClosedBridge.clearRecentlyClosedTabs(); |
+ mRecentlyClosedTabManager.clearRecentlyClosedTabs(); |
} |
/** |
@@ -369,7 +349,7 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta |
return mNewTabPagePrefs.getSyncPromoCollapsed(); |
} |
- protected void postUpdate() { |
+ private void postUpdate() { |
if (mUpdatedCallback != null) { |
mUpdatedCallback.onUpdated(); |
} |
@@ -402,4 +382,9 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta |
public boolean isSignedIn() { |
return ChromeSigninController.get(mContext).isSignedIn(); |
} |
+ |
+ @VisibleForTesting |
+ public static void setRecentlyClosedTabManagerForTests(RecentlyClosedTabManager manager) { |
+ sRecentlyClosedTabManagerForTests = manager; |
+ } |
} |