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; |
} |
} |