Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1547)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java

Issue 2610143002: Add RecentTabsPageTest (Closed)
Patch Set: Address review comments from bauerb. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
+ }
}

Powered by Google App Engine
This is Rietveld 408576698