Commit f3358484 authored by Matt Simmons's avatar Matt Simmons Committed by Commit Bot

Split NewTabPageLayout#initialize's Tab parameter into 2 parameters.

The Tab is only used to get the activity and overview mode behavior. Let
the consumers (NewTabPageView and FeedNewTabPage) handle instanceof and
null checks and pass in the two new parameters.

R=yusufo@chromium.org

Bug: 985386
Change-Id: Id760dabc41a3c08cf37b0e72a8d6513003b5b88a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1741965Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Commit-Queue: Matt Simmons <mattsimmons@chromium.org>
Cr-Commit-Position: refs/heads/master@{#685357}
parent 3febcf24
...@@ -18,6 +18,8 @@ import org.chromium.base.VisibleForTesting; ...@@ -18,6 +18,8 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
import org.chromium.chrome.browser.feed.action.FeedActionHandler; import org.chromium.chrome.browser.feed.action.FeedActionHandler;
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
import org.chromium.chrome.browser.native_page.ContextMenuManager; import org.chromium.chrome.browser.native_page.ContextMenuManager;
...@@ -63,8 +65,12 @@ public class FeedNewTabPage ...@@ -63,8 +65,12 @@ public class FeedNewTabPage
NewTabPage.CONTEXT_MENU_USER_ACTION_PREFIX); NewTabPage.CONTEXT_MENU_USER_ACTION_PREFIX);
mTab.getWindowAndroid().addContextMenuCloseListener(mContextMenuManager); mTab.getWindowAndroid().addContextMenuCloseListener(mContextMenuManager);
mNewTabPageLayout.initialize(mNewTabPageManager, mTab, mTileGroupDelegate, OverviewModeBehavior overviewModeBehavior = activity instanceof ChromeTabbedActivity
mSearchProviderHasLogo, ? activity.getOverviewModeBehavior()
: null;
mNewTabPageLayout.initialize(mNewTabPageManager, activity, overviewModeBehavior,
mTileGroupDelegate, mSearchProviderHasLogo,
TemplateUrlServiceFactory.get().isDefaultSearchEngineGoogle(), TemplateUrlServiceFactory.get().isDefaultSearchEngineGoogle(),
mCoordinator.getScrollDelegate(), mContextMenuManager, mCoordinator.getUiConfig()); mCoordinator.getScrollDelegate(), mContextMenuManager, mCoordinator.getUiConfig());
} }
......
...@@ -27,7 +27,7 @@ import android.widget.TextView; ...@@ -27,7 +27,7 @@ import android.widget.TextView;
import org.chromium.base.TraceEvent; import org.chromium.base.TraceEvent;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.compositor.layouts.EmptyOverviewModeObserver; import org.chromium.chrome.browser.compositor.layouts.EmptyOverviewModeObserver;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior; import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareThumbnailProvider; import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareThumbnailProvider;
...@@ -50,7 +50,6 @@ import org.chromium.chrome.browser.suggestions.tile.Tile; ...@@ -50,7 +50,6 @@ import org.chromium.chrome.browser.suggestions.tile.Tile;
import org.chromium.chrome.browser.suggestions.tile.TileGridLayout; import org.chromium.chrome.browser.suggestions.tile.TileGridLayout;
import org.chromium.chrome.browser.suggestions.tile.TileGroup; import org.chromium.chrome.browser.suggestions.tile.TileGroup;
import org.chromium.chrome.browser.suggestions.tile.TileRenderer; import org.chromium.chrome.browser.suggestions.tile.TileRenderer;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.util.FeatureUtilities; import org.chromium.chrome.browser.util.FeatureUtilities;
import org.chromium.chrome.browser.util.MathUtils; import org.chromium.chrome.browser.util.MathUtils;
import org.chromium.chrome.browser.util.ViewUtils; import org.chromium.chrome.browser.util.ViewUtils;
...@@ -90,7 +89,8 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer ...@@ -90,7 +89,8 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
private OnSearchBoxScrollListener mSearchBoxScrollListener; private OnSearchBoxScrollListener mSearchBoxScrollListener;
private NewTabPageManager mManager; private NewTabPageManager mManager;
private Tab mTab; private ChromeActivity mActivity;
private OverviewModeBehavior mOverviewModeBehavior;
private LogoDelegateImpl mLogoDelegate; private LogoDelegateImpl mLogoDelegate;
private TileGroup mTileGroup; private TileGroup mTileGroup;
private UiConfig mUiConfig; private UiConfig mUiConfig;
...@@ -196,28 +196,30 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer ...@@ -196,28 +196,30 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
* *
* @param manager NewTabPageManager used to perform various actions when the user interacts * @param manager NewTabPageManager used to perform various actions when the user interacts
* with the page. * with the page.
* @param tab The Tab that is showing this new tab page. * @param activity The activity that currently owns the new tab page
* @param overviewModeBehavior The overview mode behavior associated with the new tab page.
* @param searchProviderHasLogo Whether the search provider has a logo. * @param searchProviderHasLogo Whether the search provider has a logo.
* @param searchProviderIsGoogle Whether the search provider is Google. * @param searchProviderIsGoogle Whether the search provider is Google.
* @param scrollDelegate The delegate used to obtain information about scroll state. * @param scrollDelegate The delegate used to obtain information about scroll state.
* @param contextMenuManager The manager for long-press context menus. * @param contextMenuManager The manager for long-press context menus.
* @param uiConfig UiConfig that provides display information about this view. * @param uiConfig UiConfig that provides display information about this view.
*/ */
public void initialize(NewTabPageManager manager, Tab tab, TileGroup.Delegate tileGroupDelegate, public void initialize(NewTabPageManager manager, ChromeActivity activity,
boolean searchProviderHasLogo, boolean searchProviderIsGoogle, @Nullable OverviewModeBehavior overviewModeBehavior,
ScrollDelegate scrollDelegate, ContextMenuManager contextMenuManager, TileGroup.Delegate tileGroupDelegate, boolean searchProviderHasLogo,
UiConfig uiConfig) { boolean searchProviderIsGoogle, ScrollDelegate scrollDelegate,
ContextMenuManager contextMenuManager, UiConfig uiConfig) {
TraceEvent.begin(TAG + ".initialize()"); TraceEvent.begin(TAG + ".initialize()");
mScrollDelegate = scrollDelegate; mScrollDelegate = scrollDelegate;
mTab = tab;
mManager = manager; mManager = manager;
mActivity = activity;
mUiConfig = uiConfig; mUiConfig = uiConfig;
Profile profile = Profile.getLastUsedProfile(); Profile profile = Profile.getLastUsedProfile();
OfflinePageBridge offlinePageBridge = OfflinePageBridge offlinePageBridge =
SuggestionsDependencyFactory.getInstance().getOfflinePageBridge(profile); SuggestionsDependencyFactory.getInstance().getOfflinePageBridge(profile);
TileRenderer tileRenderer = TileRenderer tileRenderer =
new TileRenderer(mTab.getActivity(), SuggestionsConfig.getTileStyle(mUiConfig), new TileRenderer(mActivity, SuggestionsConfig.getTileStyle(mUiConfig),
getTileTitleLines(), mManager.getImageFetcher()); getTileTitleLines(), mManager.getImageFetcher());
mTileGroup = new TileGroup(tileRenderer, mManager, contextMenuManager, tileGroupDelegate, mTileGroup = new TileGroup(tileRenderer, mManager, contextMenuManager, tileGroupDelegate,
/* observer = */ this, offlinePageBridge); /* observer = */ this, offlinePageBridge);
...@@ -240,7 +242,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer ...@@ -240,7 +242,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
mManager.getNavigationDelegate(), mSearchProviderLogoView, profile); mManager.getNavigationDelegate(), mSearchProviderLogoView, profile);
mSearchBoxView = findViewById(R.id.search_box); mSearchBoxView = findViewById(R.id.search_box);
if (!DeviceFormFactor.isWindowOnTablet(mTab.getWindowAndroid())) { if (!DeviceFormFactor.isWindowOnTablet(mActivity.getWindowAndroid())) {
mSearchBoxBoundsVerticalInset = getResources().getDimensionPixelSize( mSearchBoxBoundsVerticalInset = getResources().getDimensionPixelSize(
R.dimen.ntp_search_box_bounds_vertical_inset_modern); R.dimen.ntp_search_box_bounds_vertical_inset_modern);
} }
...@@ -257,20 +259,17 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer ...@@ -257,20 +259,17 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
VrModuleProvider.registerVrModeObserver(this); VrModuleProvider.registerVrModeObserver(this);
if (VrModuleProvider.getDelegate().isInVr()) onEnterVr(); if (VrModuleProvider.getDelegate().isInVr()) onEnterVr();
if (tab.getActivity() instanceof ChromeTabbedActivity) { mOverviewModeBehavior = overviewModeBehavior;
OverviewModeBehavior overviewModeBehavior = if (overviewModeBehavior.overviewVisible()) {
((ChromeTabbedActivity) tab.getActivity()).getOverviewModeBehavior(); mOverviewObserver = new EmptyOverviewModeObserver() {
if (overviewModeBehavior.overviewVisible()) { @Override
mOverviewObserver = new EmptyOverviewModeObserver() { public void onOverviewModeFinishedHiding() {
@Override maybeShowIPHOnHomepageTile();
public void onOverviewModeFinishedHiding() { overviewModeBehavior.removeOverviewModeObserver(mOverviewObserver);
maybeShowIPHOnHomepageTile(); mOverviewObserver = null;
overviewModeBehavior.removeOverviewModeObserver(mOverviewObserver); }
mOverviewObserver = null; };
} overviewModeBehavior.addOverviewModeObserver(mOverviewObserver);
};
overviewModeBehavior.addOverviewModeObserver(mOverviewObserver);
}
} }
manager.addDestructionObserver(NewTabPageLayout.this::onDestroy); manager.addDestructionObserver(NewTabPageLayout.this::onDestroy);
...@@ -740,7 +739,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer ...@@ -740,7 +739,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
if (!mHasShownView) { if (!mHasShownView) {
mHasShownView = true; mHasShownView = true;
onInitializationProgressChanged(); onInitializationProgressChanged();
NewTabPageUma.recordSearchAvailableLoadTime(mTab.getActivity()); NewTabPageUma.recordSearchAvailableLoadTime(mActivity);
TraceEvent.instant("NewTabPageSearchAvailable)"); TraceEvent.instant("NewTabPageSearchAvailable)");
} }
...@@ -893,10 +892,8 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer ...@@ -893,10 +892,8 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
VrModuleProvider.unregisterVrModeObserver(this); VrModuleProvider.unregisterVrModeObserver(this);
// Need to null-check compositor view holder and layout manager since they might've // Need to null-check compositor view holder and layout manager since they might've
// been cleared by now. // been cleared by now.
if (mOverviewObserver != null && mTab.getActivity() instanceof ChromeTabbedActivity) { if (mOverviewObserver != null) {
((ChromeTabbedActivity) mTab.getActivity()) mActivity.getOverviewModeBehavior().removeOverviewModeObserver(mOverviewObserver);
.getOverviewModeBehavior()
.removeOverviewModeObserver(mOverviewObserver);
mOverviewObserver = null; mOverviewObserver = null;
} }
} }
......
...@@ -16,6 +16,8 @@ import android.view.LayoutInflater; ...@@ -16,6 +16,8 @@ import android.view.LayoutInflater;
import org.chromium.base.TraceEvent; import org.chromium.base.TraceEvent;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareThumbnailProvider; import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareThumbnailProvider;
import org.chromium.chrome.browser.gesturenav.HistoryNavigationDelegateFactory; import org.chromium.chrome.browser.gesturenav.HistoryNavigationDelegateFactory;
import org.chromium.chrome.browser.gesturenav.HistoryNavigationLayout; import org.chromium.chrome.browser.gesturenav.HistoryNavigationLayout;
...@@ -130,8 +132,14 @@ public class NewTabPageView extends HistoryNavigationLayout { ...@@ -130,8 +132,14 @@ public class NewTabPageView extends HistoryNavigationLayout {
mTab.getWindowAndroid().addContextMenuCloseListener(mContextMenuManager); mTab.getWindowAndroid().addContextMenuCloseListener(mContextMenuManager);
setNavigationDelegate(HistoryNavigationDelegateFactory.create(mTab)); setNavigationDelegate(HistoryNavigationDelegateFactory.create(mTab));
mNewTabPageLayout.initialize(manager, tab, tileGroupDelegate, searchProviderHasLogo, OverviewModeBehavior overviewModeBehavior =
searchProviderIsGoogle, mRecyclerView, mContextMenuManager, mUiConfig); tab.getActivity() instanceof ChromeTabbedActivity
? tab.getActivity().getOverviewModeBehavior()
: null;
mNewTabPageLayout.initialize(manager, tab.getActivity(), overviewModeBehavior,
tileGroupDelegate, searchProviderHasLogo, searchProviderIsGoogle, mRecyclerView,
mContextMenuManager, mUiConfig);
NewTabPageUma.trackTimeToFirstDraw(this, constructedTimeNs); NewTabPageUma.trackTimeToFirstDraw(this, constructedTimeNs);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment