| 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 53d8d2f157ed7ee18085ee81ff24fd0925a84183..57a49d7f15efc40a50c46ce8aa8848dc3c603b26 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
|
| @@ -76,10 +76,16 @@ public class NewTabPageView
|
| private static final String PARAM_NTP_TILE_TITLE_LINES = "ntp_tile_title_lines";
|
|
|
| /**
|
| - * The maximum number of tiles to try and fit in a row. On smaller screens, there may not be
|
| - * enough space to fit all of them.
|
| + * Experiment parameter for whether to use the condensed tile layout on small screens.
|
| */
|
| - private static final int MAX_TILE_COLUMNS = 4;
|
| + private static final String PARAM_CONDENSED_TILE_LAYOUT_FOR_SMALL_SCREENS_ENABLED =
|
| + "condensed_tile_layout_for_small_screens_enabled";
|
| +
|
| + /**
|
| + * Experiment parameter for whether to use the condensed tile layout on large screens.
|
| + */
|
| + private static final String PARAM_CONDENSED_TILE_LAYOUT_FOR_LARGE_SCREENS_ENABLED =
|
| + "condensed_tile_layout_for_large_screens_enabled";
|
|
|
| private NewTabPageRecyclerView mRecyclerView;
|
|
|
| @@ -234,6 +240,7 @@ public class NewTabPageView
|
|
|
| mTileGridLayout = (TileGridLayout) mNewTabPageLayout.findViewById(R.id.tile_grid_layout);
|
| mTileGridLayout.setMaxRows(getMaxTileRows(searchProviderHasLogo));
|
| + mTileGridLayout.setMaxColumns(getMaxTileColumns());
|
| mTileGroup = new TileGroup(mActivity, mManager, mContextMenuManager, mTileGroupDelegate,
|
| /* observer = */ this, offlinePageBridge, getTileTitleLines());
|
|
|
| @@ -248,7 +255,7 @@ public class NewTabPageView
|
| mNewTabPageLayout.addOnLayoutChangeListener(this);
|
| setSearchProviderHasLogo(searchProviderHasLogo);
|
|
|
| - mTileGroup.startObserving(getMaxTileRows(searchProviderHasLogo) * MAX_TILE_COLUMNS);
|
| + mTileGroup.startObserving(getMaxTileRows(searchProviderHasLogo) * getMaxTileColumns());
|
|
|
| // Set up snippets
|
| NewTabPageAdapter newTabPageAdapter = new NewTabPageAdapter(mManager, mNewTabPageLayout,
|
| @@ -805,6 +812,20 @@ public class NewTabPageView
|
| ChromeFeatureList.NTP_CONDENSED_LAYOUT, PARAM_NTP_MAX_TILE_ROWS, defaultValue);
|
| }
|
|
|
| + /**
|
| + * Determines The maximum number of tiles to try and fit in a row. On smaller screens, there
|
| + * may not be enough space to fit all of them.
|
| + */
|
| + private int getMaxTileColumns() {
|
| + if (!mUiConfig.getCurrentDisplayStyle().isSmall()
|
| + && ChromeFeatureList.getFieldTrialParamByFeatureAsBoolean(
|
| + ChromeFeatureList.NTP_CONDENSED_TILE_LAYOUT,
|
| + PARAM_CONDENSED_TILE_LAYOUT_FOR_LARGE_SCREENS_ENABLED, false)) {
|
| + return 5;
|
| + }
|
| + return 4;
|
| + }
|
| +
|
| private static int getTileTitleLines() {
|
| int defaultValue = 2;
|
| if (ChromeFeatureList.isEnabled(ChromeFeatureList.NTP_CONDENSED_LAYOUT)) {
|
| @@ -814,6 +835,17 @@ public class NewTabPageView
|
| ChromeFeatureList.NTP_CONDENSED_LAYOUT, PARAM_NTP_TILE_TITLE_LINES, defaultValue);
|
| }
|
|
|
| + private boolean shouldUseCondensedTileLayout() {
|
| + if (mUiConfig.getCurrentDisplayStyle().isSmall()) {
|
| + return ChromeFeatureList.getFieldTrialParamByFeatureAsBoolean(
|
| + ChromeFeatureList.NTP_CONDENSED_TILE_LAYOUT,
|
| + PARAM_CONDENSED_TILE_LAYOUT_FOR_SMALL_SCREENS_ENABLED, false);
|
| + }
|
| + return ChromeFeatureList.getFieldTrialParamByFeatureAsBoolean(
|
| + ChromeFeatureList.NTP_CONDENSED_TILE_LAYOUT,
|
| + PARAM_CONDENSED_TILE_LAYOUT_FOR_LARGE_SCREENS_ENABLED, false);
|
| + }
|
| +
|
| @Override
|
| protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
| if (mNewTabPageLayout != null) {
|
| @@ -855,7 +887,8 @@ public class NewTabPageView
|
|
|
| @Override
|
| public void onTileDataChanged() {
|
| - mTileGroup.renderTileViews(mTileGridLayout, !mLoadHasCompleted);
|
| + mTileGroup.renderTileViews(
|
| + mTileGridLayout, !mLoadHasCompleted, shouldUseCondensedTileLayout());
|
| mSnapshotTileGridChanged = true;
|
|
|
| // The page contents are initially hidden; otherwise they'll be drawn centered on the page
|
|
|