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

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

Issue 1206673003: Merge java_staging/src into java/src. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 6 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_staging/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
deleted file mode 100644
index 6b1ae46235abe14d20418f24d6044ada1e42b8d0..0000000000000000000000000000000000000000
--- a/chrome/android/java_staging/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
+++ /dev/null
@@ -1,449 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.chrome.browser.ntp;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-
-import org.chromium.base.ObserverList;
-import org.chromium.base.ThreadUtils;
-import org.chromium.chrome.browser.ForeignSessionHelper;
-import org.chromium.chrome.browser.ForeignSessionHelper.ForeignSession;
-import org.chromium.chrome.browser.ForeignSessionHelper.ForeignSessionCallback;
-import org.chromium.chrome.browser.ForeignSessionHelper.ForeignSessionTab;
-import org.chromium.chrome.browser.NewTabPagePrefs;
-import org.chromium.chrome.browser.RecentlyClosedBridge;
-import org.chromium.chrome.browser.RecentlyClosedBridge.RecentlyClosedCallback;
-import org.chromium.chrome.browser.RecentlyClosedBridge.RecentlyClosedTab;
-import org.chromium.chrome.browser.Tab;
-import org.chromium.chrome.browser.UrlConstants;
-import org.chromium.chrome.browser.favicon.FaviconHelper;
-import org.chromium.chrome.browser.favicon.FaviconHelper.FaviconImageCallback;
-import org.chromium.chrome.browser.ntp.RecentTabsPromoView.SyncPromoModel;
-import org.chromium.chrome.browser.profiles.Profile;
-import org.chromium.chrome.browser.signin.SigninManager;
-import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver;
-import org.chromium.chrome.browser.sync.SyncController;
-import org.chromium.content_public.browser.LoadUrlParams;
-import org.chromium.sync.AndroidSyncSettings;
-import org.chromium.sync.AndroidSyncSettings.AndroidSyncSettingsObserver;
-import org.chromium.sync.signin.ChromeSigninController;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Provides the domain logic and data for RecentTabsPage and RecentTabsRowAdapter.
- */
-public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInStateObserver,
- SyncPromoModel {
-
- /**
- * Implement this to receive updates when the page contents change.
- */
- interface UpdatedCallback {
- /**
- * Called when the list of recently closed tabs or foreign sessions changes.
- */
- void onUpdated();
- }
-
- private static final int RECENTLY_CLOSED_MAX_TAB_COUNT = 5;
-
- private final Profile mProfile;
- private final Tab mTab;
- private final Context mContext;
- private final ObserverList<AndroidSyncSettingsObserver> mObservers =
- new ObserverList<AndroidSyncSettingsObserver>();
-
- private FaviconHelper mFaviconHelper;
- private ForeignSessionHelper mForeignSessionHelper;
- private List<ForeignSession> mForeignSessions;
- private List<RecentlyClosedTab> mRecentlyClosedTabs;
- private NewTabPagePrefs mNewTabPagePrefs;
- private RecentlyClosedBridge mRecentlyClosedBridge;
- private SigninManager mSignInManager;
- private UpdatedCallback mUpdatedCallback;
-
- /**
- * Create an RecentTabsManager to be used with RecentTabsPage and RecentTabsRowAdapter.
- *
- * @param tab The Tab that is showing this recent tabs page.
- * @param profile Profile that is associated with the current session.
- * @param context the Android context this manager will work in.
- */
- public RecentTabsManager(Tab tab, Profile profile, Context context) {
- mProfile = profile;
- mTab = tab;
- mForeignSessionHelper = buildForeignSessionHelper(mProfile);
- mNewTabPagePrefs = buildNewTabPagePrefs(mProfile);
- mFaviconHelper = buildFaviconHelper();
- mRecentlyClosedBridge = buildRecentlyClosedBridge(mProfile);
- mSignInManager = SigninManager.get(context);
- mContext = context;
-
- updateRecentlyClosedTabs();
- registerForForeignSessionUpdates();
- updateForeignSessions();
- mForeignSessionHelper.triggerSessionSync();
- registerForSignInAndSyncNotifications();
- }
-
- /**
- * Should be called when this object is no longer needed. Performs necessary listener tear down.
- */
- public void destroy() {
- AndroidSyncSettings.unregisterObserver(mContext, this);
-
- mSignInManager.removeSignInStateObserver(this);
- mSignInManager = null;
-
- mFaviconHelper.destroy();
- mFaviconHelper = null;
-
- mRecentlyClosedBridge.destroy();
- mRecentlyClosedBridge = null;
-
- mForeignSessionHelper.destroy();
- mForeignSessionHelper = null;
-
- mUpdatedCallback = null;
-
- mNewTabPagePrefs.destroy();
- mNewTabPagePrefs = null;
- }
-
- 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
- public void onUpdated() {
- updateForeignSessions();
- postUpdate();
- }
- });
- }
-
- private void registerForSignInAndSyncNotifications() {
- AndroidSyncSettings.registerObserver(mContext, this);
- mSignInManager.addSignInStateObserver(this);
- }
-
- protected void updateCurrentlyOpenTabs() {
- }
-
- private void updateRecentlyClosedTabs() {
- mRecentlyClosedTabs = mRecentlyClosedBridge.getRecentlyClosedTabs(
- RECENTLY_CLOSED_MAX_TAB_COUNT);
- }
-
- private void updateForeignSessions() {
- mForeignSessions = mForeignSessionHelper.getForeignSessions();
- if (mForeignSessions == null) {
- mForeignSessions = Collections.emptyList();
- }
- }
-
- /**
- * @return Most up-to-date list of currently open tabs.
- */
- public List<CurrentlyOpenTab> getCurrentlyOpenTabs() {
- return null;
- }
-
- /**
- * @return Most up-to-date list of foreign sessions.
- */
- public List<ForeignSession> getForeignSessions() {
- return mForeignSessions;
- }
-
- /**
- * @return Most up-to-date list of recently closed tabs.
- */
- public List<RecentlyClosedTab> getRecentlyClosedTabs() {
- return mRecentlyClosedTabs;
- }
-
- /**
- * Opens a new tab navigating to ForeignSessionTab.
- *
- * @param session The foreign session that the tab belongs to.
- * @param tab The tab to open.
- * @param windowDisposition The WindowOpenDisposition flag.
- */
- public void openForeignSessionTab(ForeignSession session, ForeignSessionTab tab,
- int windowDisposition) {
- NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_FOREIGN_SESSION);
- mForeignSessionHelper.openForeignSessionTab(mTab, session, tab, windowDisposition);
- }
-
- /**
- * Restores a recently closed tab.
- *
- * @param tab The tab to open.
- * @param windowDisposition The WindowOpenDisposition value specifying whether the tab should
- * be restored into the current tab or a new tab.
- */
- public void openRecentlyClosedTab(RecentlyClosedTab tab, int windowDisposition) {
- NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_RECENTLY_CLOSED_ENTRY);
- mRecentlyClosedBridge.openRecentlyClosedTab(mTab, tab, windowDisposition);
- }
-
- /**
- * Opens the history page.
- */
- public void openHistoryPage() {
- mTab.loadUrl(new LoadUrlParams(UrlConstants.HISTORY_URL));
- }
-
- /**
- * Returns a 16x16 favicon for a given synced url.
- *
- * @param url The url to fetch the favicon for.
- * @return 16x16 favicon or null if favicon unavailable.
- */
- public Bitmap getSyncedFaviconImageForURL(String url) {
- return mFaviconHelper.getSyncedFaviconImageForURL(mProfile, url);
- }
-
- /**
- * Fetches a favicon for snapshot document url which is returned via callback.
- *
- * @param url The url to fetch a favicon for.
- * @param size the desired favicon size.
- * @param faviconCallback the callback to be invoked when the favicon is available.
- *
- * @return may return false if we could not fetch the favicon.
- */
- public boolean getLocalFaviconForUrl(String url, int size,
- FaviconImageCallback faviconCallback) {
- return mFaviconHelper.getLocalFaviconImageForURL(mProfile, url,
- FaviconHelper.FAVICON | FaviconHelper.TOUCH_ICON
- | FaviconHelper.TOUCH_PRECOMPOSED_ICON,
- size, faviconCallback);
- }
-
- /**
- * Sets a callback to be invoked when recently closed tabs or foreign sessions documents have
- * been updated.
- *
- * @param updatedCallback the listener to be invoked.
- */
- public void setUpdatedCallback(UpdatedCallback updatedCallback) {
- mUpdatedCallback = updatedCallback;
- }
-
- /**
- * Sets the persistent expanded/collapsed state of the currently open tabs list.
- *
- * @param isCollapsed Whether the currently open tabs list is collapsed.
- */
- public void setCurrentlyOpenTabsCollapsed(boolean isCollapsed) {
- mNewTabPagePrefs.setCurrentlyOpenTabsCollapsed(isCollapsed);
- }
-
- /**
- * Determine the expanded/collapsed state of the currently open tabs list.
- *
- * @return Whether the currently open tabs list is collapsed.
- */
- public boolean isCurrentlyOpenTabsCollapsed() {
- return mNewTabPagePrefs.getCurrentlyOpenTabsCollapsed();
- }
-
- /**
- * Sets the state for showing all tabs in the currently open tabs list. This is intended to
- * be overridden in extending classes and set to true when the user clicks the "More" button
- * at the end of the list.
- * @param showingAll Whether the currently open tabs list should start to show all.
- */
- public void setCurrentlyOpenTabsShowAll(boolean showingAll) {
- }
-
- /**
- * @return Whether the currently open tabs group shows all tabs. If it is not, only a limited
- * number of tabs is shown with a "More" button at the end of the list to show all.
- */
- public boolean isCurrentlyOpenTabsShowingAll() {
- return false;
- }
-
- /**
- * Closes the specified currently open tab.
- * @param tab Information about the tab that should be closed.
- */
- public void closeTab(CurrentlyOpenTab tab) {
- }
-
- /**
- * Sets the persistent expanded/collapsed state of a foreign session list.
- *
- * @param session foreign session to collapsed.
- * @param isCollapsed Whether the session is collapsed or expanded.
- */
- public void setForeignSessionCollapsed(ForeignSession session, boolean isCollapsed) {
- mNewTabPagePrefs.setForeignSessionCollapsed(session, isCollapsed);
- }
-
- /**
- * Determine the expanded/collapsed state of a foreign session list.
- *
- * @param session foreign session whose state to obtain.
- *
- * @return Whether the session is collapsed.
- */
- public boolean getForeignSessionCollapsed(ForeignSession session) {
- return mNewTabPagePrefs.getForeignSessionCollapsed(session);
- }
-
- /**
- * Sets the persistent expanded/collapsed state of the recently closed tabs list.
- *
- * @param isCollapsed Whether the recently closed tabs list is collapsed.
- */
- public void setRecentlyClosedTabsCollapsed(boolean isCollapsed) {
- mNewTabPagePrefs.setRecentlyClosedTabsCollapsed(isCollapsed);
- }
-
- /**
- * Determine the expanded/collapsed state of the recently closed tabs list.
- *
- * @return Whether the recently closed tabs list is collapsed.
- */
- public boolean isRecentlyClosedTabsCollapsed() {
- return mNewTabPagePrefs.getRecentlyClosedTabsCollapsed();
- }
-
- /**
- * Remove Foreign session to display. Note that it might reappear during the next sync if the
- * session is not orphaned.
- *
- * This is mainly for when user wants to delete an orphaned session.
- * @param session Session to be deleted.
- */
- public void deleteForeignSession(ForeignSession session) {
- mForeignSessionHelper.deleteForeignSession(session);
- }
-
- /**
- * Clears the list of recently closed tabs.
- */
- public void clearRecentlyClosedTabs() {
- mRecentlyClosedBridge.clearRecentlyClosedTabs();
- }
-
- /**
- * Determine whether the sync promo needs to be displayed.
- *
- * @return Whether sync promo should be displayed.
- */
- public boolean shouldDisplaySyncPromo() {
- if (SigninManager.get(mContext).isSigninDisabledByPolicy()) {
- return false;
- }
-
- return !AndroidSyncSettings.isSyncEnabled(mContext) || mForeignSessions.isEmpty();
- }
-
- /**
- * Collapse the sync promo.
- *
- * @param isCollapsed Whether the sync promo is collapsed.
- */
- public void setSyncPromoCollapsed(boolean isCollapsed) {
- mNewTabPagePrefs.setSyncPromoCollapsed(isCollapsed);
- }
-
- /**
- * Determine whether the sync promo is collapsed.
- *
- * @return Whether the sync promo is collapsed.
- */
- public boolean isSyncPromoCollapsed() {
- return mNewTabPagePrefs.getSyncPromoCollapsed();
- }
-
- protected void postUpdate() {
- if (mUpdatedCallback != null) {
- mUpdatedCallback.onUpdated();
- }
- }
-
- // SignInStateObserver
- @Override
- public void onSignedIn() {
- androidSyncSettingsChanged();
- }
-
- @Override
- public void onSignedOut() {
- androidSyncSettingsChanged();
- }
-
- // AndroidSyncSettingsObserver
- @Override
- public void androidSyncSettingsChanged() {
- ThreadUtils.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- updateForeignSessions();
- postUpdate();
- for (AndroidSyncSettingsObserver observer : mObservers) {
- observer.androidSyncSettingsChanged();
- }
- }
- });
- }
-
- // SyncPromoModel
- @Override
- public boolean isSyncEnabled() {
- return AndroidSyncSettings.isSyncEnabled(mContext);
- }
-
- @Override
- public boolean isSignedIn() {
- return ChromeSigninController.get(mContext).isSignedIn();
- }
-
- @Override
- public void enableSync() {
- SyncController.get(mContext).start();
- }
-
- @Override
- public void registerForSyncUpdates(AndroidSyncSettingsObserver changeListener) {
- mObservers.addObserver(changeListener);
- }
-
- @Override
- public void unregisterForSyncUpdates(AndroidSyncSettingsObserver changeListener) {
- mObservers.removeObserver(changeListener);
- }
-}

Powered by Google App Engine
This is Rietveld 408576698