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

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

Issue 2623993007: 🏠 Extract the ContentSuggestionManager interface from NTP (Closed)
Patch Set: address comments 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/NewTabPageView.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java
index 141dbabca4a3c6c8b2ccd99c062f4f0eeaf75461..f76d53c0ff66302c48eb68184011112f096fe323 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java
@@ -42,8 +42,6 @@
import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
-import org.chromium.chrome.browser.favicon.FaviconHelper.FaviconImageCallback;
-import org.chromium.chrome.browser.favicon.FaviconHelper.IconAvailabilityCallback;
import org.chromium.chrome.browser.favicon.LargeIconBridge.LargeIconCallback;
import org.chromium.chrome.browser.ntp.LogoBridge.Logo;
import org.chromium.chrome.browser.ntp.LogoBridge.LogoObserver;
@@ -53,13 +51,11 @@
import org.chromium.chrome.browser.ntp.cards.CardsVariationParameters;
import org.chromium.chrome.browser.ntp.cards.NewTabPageAdapter;
import org.chromium.chrome.browser.ntp.cards.NewTabPageRecyclerView;
-import org.chromium.chrome.browser.ntp.snippets.SnippetArticle;
import org.chromium.chrome.browser.ntp.snippets.SnippetsConfig;
-import org.chromium.chrome.browser.ntp.snippets.SuggestionsSource;
import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
import org.chromium.chrome.browser.profiles.MostVisitedSites.MostVisitedURLsObserver;
import org.chromium.chrome.browser.profiles.Profile;
-import org.chromium.chrome.browser.suggestions.SuggestionsMetricsReporter;
+import org.chromium.chrome.browser.suggestions.SuggestionsUiDelegate;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.util.MathUtils;
import org.chromium.chrome.browser.util.ViewUtils;
@@ -102,9 +98,6 @@
private View mMostVisitedPlaceholder;
private View mNoSearchLogoSpacer;
- /** Adapter for {@link #mRecyclerView}. Will be {@code null} when using the old UI */
- private NewTabPageAdapter mNewTabPageAdapter;
-
private OnSearchBoxScrollListener mSearchBoxScrollListener;
private ChromeActivity mActivity;
@@ -139,7 +132,7 @@
/**
* Manages the view interaction with the rest of the system.
*/
- public interface NewTabPageManager extends MostVisitedItemManager {
+ public interface NewTabPageManager extends MostVisitedItemManager, SuggestionsUiDelegate {
/** @return Whether the location bar is shown in the NTP. */
boolean isLocationBarShownInNTP();
@@ -149,28 +142,6 @@
/** @return Whether the omnibox 'Search or type URL' text should be shown. */
boolean isFakeOmniboxTextEnabledTablet();
- /** @return Whether context menus should allow the option to open a link in a new window. */
- boolean isOpenInNewWindowEnabled();
-
- /** @return Whether context menus should allow the option to open a link in incognito. */
- boolean isOpenInIncognitoEnabled();
-
- /** Opens the bookmarks page in the current tab. */
- void navigateToBookmarks();
-
- /** Opens the recent tabs page in the current tab. */
- void navigateToRecentTabs();
-
- /** Opens the Download Manager UI in the current tab. */
- void navigateToDownloadManager();
-
- /**
- * Opens a content suggestion and records related metrics.
- * @param windowOpenDisposition How to open (current tab, new tab, new window etc).
- * @param article The content suggestion to open.
- */
- void openSnippet(int windowOpenDisposition, SnippetArticle article);
-
/**
* Animates the search box up into the omnibox and bring up the keyboard.
* @param beginVoiceSearch Whether to begin a voice search.
@@ -186,41 +157,6 @@
void setMostVisitedURLsObserver(MostVisitedURLsObserver observer, int numResults);
/**
- * Gets the favicon image for a given URL.
- * @param url The URL of the site whose favicon is being requested.
- * @param size The desired size of the favicon in pixels.
- * @param faviconCallback The callback to be notified when the favicon is available.
- */
- void getLocalFaviconImageForURL(
- String url, int size, FaviconImageCallback faviconCallback);
-
- /**
- * Gets the large icon (e.g. favicon or touch icon) for a given URL.
- * @param url The URL of the site whose icon is being requested.
- * @param size The desired size of the icon in pixels.
- * @param callback The callback to be notified when the icon is available.
- */
- void getLargeIconForUrl(String url, int size, LargeIconCallback callback);
-
- /**
- * Checks if an icon with the given URL is available. If not,
- * downloads it and stores it as a favicon/large icon for the given {@code pageUrl}.
- * @param pageUrl The URL of the site whose icon is being requested.
- * @param iconUrl The URL of the favicon/large icon.
- * @param isLargeIcon Whether the {@code iconUrl} represents a large icon or favicon.
- * @param callback The callback to be notified when the favicon has been checked.
- */
- void ensureIconIsAvailable(String pageUrl, String iconUrl, boolean isLargeIcon,
- boolean isTemporary, IconAvailabilityCallback callback);
-
- /**
- * Checks if the pages with the given URLs are available offline.
- * @param pageUrls The URLs of the sites whose offline availability is requested.
- * @param callback Fired when the results are available.
- */
- void getUrlsAvailableOffline(Set<String> pageUrls, Callback<Set<String>> callback);
-
- /**
* Called when the user clicks on the logo.
* @param isAnimatedLogoShowing Whether the animated GIF logo is playing.
*/
@@ -240,23 +176,6 @@ void ensureIconIsAvailable(String pageUrl, String iconUrl, boolean isLargeIcon,
void onLoadingComplete(MostVisitedItem[] mostVisitedItems);
/**
- * Handles clicks on the "learn more" link in the footer.
- */
- void onLearnMoreClicked();
-
- /**
- * Returns the SuggestionsSource or null if it doesn't exist. The SuggestionsSource is
- * invalidated (has destroy() called) when the NewTabPage is destroyed so use this method
- * instead of keeping your own reference.
- */
- @Nullable SuggestionsSource getSuggestionsSource();
-
- /**
- * Registers a {@link DestructionObserver}, notified when the New Tab Page goes away.
- */
- void addDestructionObserver(DestructionObserver destructionObserver);
-
- /**
* @return whether the {@link NewTabPage} associated with this manager is the current page
* displayed to the user.
*/
@@ -268,13 +187,6 @@ void ensureIconIsAvailable(String pageUrl, String iconUrl, boolean isLargeIcon,
*/
@Nullable
ContextMenuManager getContextMenuManager();
-
- /**
- * @return The suggestion metrics reporter. Will be {@code null} if the
- * {@link NewTabPageView} is not done initialising.
- */
- @Nullable
- SuggestionsMetricsReporter getSuggestionsMetricsReporter();
}
/**
@@ -336,7 +248,7 @@ public void onAnimationFinished(ViewHolder viewHolder) {
mScrollView.enableBottomShadow(SHADOW_COLOR);
mNewTabPageLayout = (NewTabPageLayout) findViewById(R.id.ntp_content);
}
- mContextMenuManager = new ContextMenuManager(mActivity, mManager,
+ mContextMenuManager = new ContextMenuManager(mActivity, mManager.getNavigationDelegate(),
mUseCardsUi ? mRecyclerView : mScrollView);
mActivity.getWindowAndroid().addContextMenuCloseListener(mContextMenuManager);
manager.addDestructionObserver(new DestructionObserver() {
@@ -369,13 +281,16 @@ public void onDestroy() {
// Set up snippets
if (mUseCardsUi) {
- mNewTabPageAdapter = new NewTabPageAdapter(mManager, mNewTabPageLayout, mUiConfig,
- OfflinePageBridge.getForProfile(Profile.getLastUsedProfile()));
- mRecyclerView.setAdapter(mNewTabPageAdapter);
+ /* Adapter for {@link #mRecyclerView}. Will be {@code null} when using the old UI */
Bernhard Bauer 2017/01/18 16:58:14 Use // for non-Java comments.
dgn 2017/01/18 18:00:27 removed, that was the old javadoc.
+ NewTabPageAdapter newTabPageAdapter = new NewTabPageAdapter(mManager, mNewTabPageLayout,
+ mUiConfig,
+ OfflinePageBridge.getForProfile(Profile.getLastUsedProfile()),
+ mContextMenuManager);
+ mRecyclerView.setAdapter(newTabPageAdapter);
int scrollOffset;
if (CardsVariationParameters.isScrollBelowTheFoldEnabled()) {
- scrollPosition = mNewTabPageAdapter.getFirstHeaderPosition();
+ scrollPosition = newTabPageAdapter.getFirstHeaderPosition();
scrollOffset = getResources().getDimensionPixelSize(R.dimen.ntp_search_box_height);
} else {
scrollOffset = 0;
@@ -389,7 +304,7 @@ public void onDestroy() {
// When the NewTabPageAdapter's data changes we need to invalidate any previous
// screen captures of the NewTabPageView.
- mNewTabPageAdapter.registerAdapterDataObserver(new AdapterDataObserver() {
+ newTabPageAdapter.registerAdapterDataObserver(new AdapterDataObserver() {
@Override
public void onChanged() {
mNewTabPageRecyclerViewChanged = true;
@@ -482,14 +397,14 @@ private void initializeBottomToolbar() {
@Override
public void onClick(View v) {
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_RECENT_TABS_MANAGER);
- mManager.navigateToRecentTabs();
+ mManager.getNavigationDelegate().navigateToRecentTabs();
}
});
toolbar.getBookmarksButton().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_BOOKMARKS_MANAGER);
- mManager.navigateToBookmarks();
+ mManager.getNavigationDelegate().navigateToBookmarks();
}
});
}

Powered by Google App Engine
This is Rietveld 408576698