| Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/ChromeHomeNewTabPageBase.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/ChromeHomeNewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/ChromeHomeNewTabPageBase.java
|
| similarity index 64%
|
| copy from chrome/android/java/src/org/chromium/chrome/browser/ntp/ChromeHomeNewTabPage.java
|
| copy to chrome/android/java/src/org/chromium/chrome/browser/ntp/ChromeHomeNewTabPageBase.java
|
| index 4583a225bcd7af8977d121e84306c4055e4fbe7b..4515d9746faf7addecc195bb992be1ad7de7410d 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/ChromeHomeNewTabPage.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/ChromeHomeNewTabPageBase.java
|
| @@ -5,13 +5,11 @@
|
| package org.chromium.chrome.browser.ntp;
|
|
|
| import android.content.Context;
|
| -import android.content.res.Resources;
|
| +import android.support.annotation.CallSuper;
|
| import android.support.annotation.Nullable;
|
| -import android.view.LayoutInflater;
|
| import android.view.View;
|
| import android.view.View.OnClickListener;
|
|
|
| -import org.chromium.base.ApiCompatibilityUtils;
|
| import org.chromium.base.VisibleForTesting;
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.ChromeTabbedActivity;
|
| @@ -20,52 +18,40 @@ import org.chromium.chrome.browser.UrlConstants;
|
| import org.chromium.chrome.browser.compositor.layouts.EmptyOverviewModeObserver;
|
| import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome;
|
| import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior.OverviewModeObserver;
|
| -import org.chromium.chrome.browser.ntp.LogoBridge.Logo;
|
| -import org.chromium.chrome.browser.ntp.LogoBridge.LogoObserver;
|
| -import org.chromium.chrome.browser.search_engines.TemplateUrlService;
|
| -import org.chromium.chrome.browser.search_engines.TemplateUrlService.TemplateUrlServiceObserver;
|
| import org.chromium.chrome.browser.tab.EmptyTabObserver;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| import org.chromium.chrome.browser.tab.TabObserver;
|
| import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
| -import org.chromium.chrome.browser.widget.TintedImageButton;
|
| import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet;
|
| import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetMetrics;
|
|
|
| /**
|
| - * The new tab page to display when Chrome Home is enabled.
|
| + * The base class for the new tab pages displayed in Chrome Home.
|
| */
|
| -public class ChromeHomeNewTabPage implements NativePage, TemplateUrlServiceObserver {
|
| - private final Tab mTab;
|
| - private final TabObserver mTabObserver;
|
| - private final TabModelSelector mTabModelSelector;
|
| - private final LogoView.Delegate mLogoDelegate;
|
| - private final OverviewModeObserver mOverviewModeObserver;
|
| +public abstract class ChromeHomeNewTabPageBase implements NativePage {
|
| + final Tab mTab;
|
| + final TabObserver mTabObserver;
|
| + final TabModelSelector mTabModelSelector;
|
| + final OverviewModeObserver mOverviewModeObserver;
|
| @Nullable
|
| - private final LayoutManagerChrome mLayoutManager;
|
| - private final BottomSheet mBottomSheet;
|
| -
|
| - private final View mView;
|
| - private final LogoView mLogoView;
|
| - private final TintedImageButton mCloseButton;
|
| - private final View mFadingBackgroundView;
|
| -
|
| - private final String mTitle;
|
| - private final int mBackgroundColor;
|
| - private final int mThemeColor;
|
| + final LayoutManagerChrome mLayoutManager;
|
| + final BottomSheet mBottomSheet;
|
| + final View mFadingBackgroundView;
|
| + final String mTitle;
|
|
|
| private boolean mShowOverviewOnClose;
|
| + private View mCloseButton;
|
|
|
| /**
|
| - * Constructs a ChromeHomeNewTabPage.
|
| + * Constructs a ChromeHomeNewTabPageBase.
|
| * @param context The context used to inflate the view.
|
| - * @param tab The Tab that is showing this new tab page.
|
| + * @param tab The {@link Tab} that is showing this new tab page.
|
| * @param tabModelSelector The {@link TabModelSelector} used to open tabs.
|
| * @param layoutManager The {@link LayoutManagerChrome} used to observe overview mode changes.
|
| * This may be null if the NTP is created on startup due to
|
| * PartnerBrowserCustomizations.
|
| */
|
| - public ChromeHomeNewTabPage(final Context context, final Tab tab,
|
| + public ChromeHomeNewTabPageBase(final Context context, final Tab tab,
|
| final TabModelSelector tabModelSelector,
|
| @Nullable final LayoutManagerChrome layoutManager) {
|
| mTab = tab;
|
| @@ -73,15 +59,7 @@ public class ChromeHomeNewTabPage implements NativePage, TemplateUrlServiceObser
|
| mLayoutManager = layoutManager;
|
| mFadingBackgroundView = mTab.getActivity().getFadingBackgroundView();
|
| mBottomSheet = mTab.getActivity().getBottomSheet();
|
| -
|
| - mView = LayoutInflater.from(context).inflate(R.layout.chrome_home_new_tab_page, null);
|
| - mLogoView = (LogoView) mView.findViewById(R.id.search_provider_logo);
|
| - mCloseButton = (TintedImageButton) mView.findViewById(R.id.close_button);
|
| -
|
| - Resources res = context.getResources();
|
| - mTitle = res.getString(R.string.button_new_tab);
|
| - mBackgroundColor = ApiCompatibilityUtils.getColor(res, R.color.ntp_bg);
|
| - mThemeColor = ApiCompatibilityUtils.getColor(res, R.color.default_primary_color);
|
| + mTitle = context.getResources().getString(R.string.button_new_tab);
|
|
|
| // A new tab may be created on startup due to PartnerBrowserCustomizations before the
|
| // LayoutManagerChrome has been created (see ChromeTabbedActivity#initializeState()).
|
| @@ -115,9 +93,6 @@ public class ChromeHomeNewTabPage implements NativePage, TemplateUrlServiceObser
|
| };
|
| mTab.addObserver(mTabObserver);
|
|
|
| - mLogoDelegate = initializeLogoView();
|
| - initializeCloseButton();
|
| -
|
| // If the tab is already showing TabObserver#onShown() won't be called, so we need to call
|
| // #onNewTabPageShown() directly.
|
| boolean tabAlreadyShowing = mTabModelSelector.getCurrentTab() == mTab;
|
| @@ -128,11 +103,6 @@ public class ChromeHomeNewTabPage implements NativePage, TemplateUrlServiceObser
|
| }
|
|
|
| @Override
|
| - public View getView() {
|
| - return mView;
|
| - }
|
| -
|
| - @Override
|
| public String getTitle() {
|
| return mTitle;
|
| }
|
| @@ -148,16 +118,6 @@ public class ChromeHomeNewTabPage implements NativePage, TemplateUrlServiceObser
|
| }
|
|
|
| @Override
|
| - public int getBackgroundColor() {
|
| - return mBackgroundColor;
|
| - }
|
| -
|
| - @Override
|
| - public int getThemeColor() {
|
| - return mThemeColor;
|
| - }
|
| -
|
| - @Override
|
| public boolean needsToolbarShadow() {
|
| return false;
|
| }
|
| @@ -166,9 +126,8 @@ public class ChromeHomeNewTabPage implements NativePage, TemplateUrlServiceObser
|
| public void updateForUrl(String url) {}
|
|
|
| @Override
|
| + @CallSuper
|
| public void destroy() {
|
| - mLogoDelegate.destroy();
|
| -
|
| // The next tab will be selected before this one is destroyed. If the currently selected
|
| // tab is a Chrome Home new tab page, the FadingBackgroundView should not be enabled.
|
| mFadingBackgroundView.setEnabled(
|
| @@ -180,11 +139,6 @@ public class ChromeHomeNewTabPage implements NativePage, TemplateUrlServiceObser
|
| mTab.removeObserver(mTabObserver);
|
| }
|
|
|
| - private void updateSearchProviderLogoVisibility() {
|
| - boolean hasLogo = TemplateUrlService.getInstance().isDefaultSearchEngineGoogle();
|
| - mLogoView.setVisibility(hasLogo ? View.VISIBLE : View.GONE);
|
| - }
|
| -
|
| private void onNewTabPageShown() {
|
| mFadingBackgroundView.setEnabled(false);
|
|
|
| @@ -201,28 +155,11 @@ public class ChromeHomeNewTabPage implements NativePage, TemplateUrlServiceObser
|
| }
|
|
|
| private boolean isTabChromeHomeNewTabPage(Tab tab) {
|
| - return tab != null && tab.getUrl().equals(getUrl()) && !tab.isIncognito();
|
| + return tab != null && tab.getUrl().equals(getUrl());
|
| }
|
|
|
| - private LogoView.Delegate initializeLogoView() {
|
| - TemplateUrlService.getInstance().addObserver(this);
|
| -
|
| - final LogoView.Delegate logoDelegate = new LogoDelegateImpl(mTab, mLogoView);
|
| - logoDelegate.getSearchProviderLogo(new LogoObserver() {
|
| - @Override
|
| - public void onLogoAvailable(Logo logo, boolean fromCache) {
|
| - if (logo == null && fromCache) return;
|
| - mLogoView.setDelegate(logoDelegate);
|
| - mLogoView.updateLogo(logo);
|
| - // TODO(twellington): The new logo may be taller than the default logo. Adjust
|
| - // the view positioning.
|
| - }
|
| - });
|
| - updateSearchProviderLogoVisibility();
|
| - return logoDelegate;
|
| - }
|
| -
|
| - private void initializeCloseButton() {
|
| + void initializeCloseButton(View closeButton) {
|
| + mCloseButton = closeButton;
|
| mCloseButton.setOnClickListener(new OnClickListener() {
|
| @Override
|
| public void onClick(View v) {
|
| @@ -245,17 +182,10 @@ public class ChromeHomeNewTabPage implements NativePage, TemplateUrlServiceObser
|
| return ((ChromeTabbedActivity) mTab.getActivity()).getLayoutManager();
|
| }
|
|
|
| - // TemplateUrlServiceObserver overrides.
|
| -
|
| - @Override
|
| - public void onTemplateURLServiceChanged() {
|
| - updateSearchProviderLogoVisibility();
|
| - }
|
| -
|
| // Methods for testing.
|
|
|
| @VisibleForTesting
|
| - public TintedImageButton getCloseButtonForTests() {
|
| + public View getCloseButtonForTests() {
|
| return mCloseButton;
|
| }
|
| }
|
|
|