Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1109)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java

Issue 2714723002: Add feature for condensed NTP tiles. (Closed)
Patch Set: Cleanups. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698