Chromium Code Reviews| 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..1fabc0b395d7f763e60f3cfda3d53f615ea7f96a 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,10 @@ |
| package org.chromium.chrome.browser.ntp; |
| import android.content.Context; |
| -import android.content.res.Resources; |
| 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 +17,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 +58,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 +92,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 +102,6 @@ public class ChromeHomeNewTabPage implements NativePage, TemplateUrlServiceObser |
| } |
| @Override |
| - public View getView() { |
| - return mView; |
| - } |
| - |
| - @Override |
| public String getTitle() { |
| return mTitle; |
| } |
| @@ -148,16 +117,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; |
| } |
| @@ -167,8 +126,6 @@ public class ChromeHomeNewTabPage implements NativePage, TemplateUrlServiceObser |
| @Override |
| public void destroy() { |
|
dgn
2017/04/12 22:28:00
nit: adding the @CallSuper annotation will let the
Theresa
2017/04/13 21:28:14
Done.
|
| - 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 +137,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 +153,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 +180,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; |
| } |
| } |