1211 lines
60 KiB
Diff
1211 lines
60 KiB
Diff
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
|
Date: Sat, 7 Nov 2020 23:51:29 +0100
|
|
Subject: Restore Simplified NTP launch
|
|
|
|
This reverts commit 4d0e4483c5f77c66a8b6193e8a3bec5d0624d6ad.
|
|
|
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|
---
|
|
chrome/android/chrome_java_resources.gni | 1 +
|
|
chrome/android/chrome_java_sources.gni | 2 +
|
|
.../java/res/layout/mv_tiles_container.xml | 2 +-
|
|
.../java/res/layout/mv_tiles_layout.xml | 13 +-
|
|
.../java/res/layout/new_tab_page_layout.xml | 7 +
|
|
.../new_tab_page_tile_grid_placeholder.xml | 8 +-
|
|
.../android/java/res/layout/ntp_shortcuts.xml | 65 ++++
|
|
chrome/android/java/res/values/attrs.xml | 4 +
|
|
chrome/android/java/res/values/dimens.xml | 2 +
|
|
.../chrome/browser/ChromeTabbedActivity.java | 3 +-
|
|
.../browser/TabbedModeTabDelegateFactory.java | 9 +-
|
|
.../feedback/ChromeFeedbackCollector.java | 1 +
|
|
.../feedback/SimplifiedNtpFeedbackSource.java | 38 +++
|
|
.../identity_disc/IdentityDiscController.java | 5 +-
|
|
.../native_page/NativePageFactory.java | 19 +-
|
|
.../NativePageNavigationDelegateImpl.java | 2 +-
|
|
.../chrome/browser/ntp/NewTabPage.java | 8 +-
|
|
.../chrome/browser/ntp/NewTabPageLayout.java | 29 +-
|
|
.../suggestions/SuggestionsConfig.java | 2 +-
|
|
.../SuggestionsNavigationDelegate.java | 27 +-
|
|
.../tile/MostVisitedTilesCoordinator.java | 6 +-
|
|
.../tile/MostVisitedTilesGridLayout.java | 287 ++++++++++++++++++
|
|
.../tile/MostVisitedTilesMediator.java | 5 +-
|
|
.../tile/TileDragDelegateImpl.java | 6 +-
|
|
.../suggestions/tile/TileRenderer.java | 8 +-
|
|
.../suggestions/tile/TilesLinearLayout.java | 2 +-
|
|
.../engagement/important_sites_util.cc | 2 +-
|
|
.../flags/android/chrome_feature_list.cc | 1 +
|
|
.../browser/flags/ChromeFeatureList.java | 3 +-
|
|
.../client_util/HomeModulesRankingHelper.java | 1 +
|
|
.../history/core/browser/top_sites_impl.h | 2 +-
|
|
components/ntp_tiles/custom_links_store.cc | 2 -
|
|
.../Restore-Simplified-NTP-launch.inc | 12 +
|
|
.../Restore-Simplified-NTP-launch.inc | 5 +
|
|
.../Restore-Simplified-NTP-launch.inc | 1 +
|
|
35 files changed, 537 insertions(+), 53 deletions(-)
|
|
create mode 100644 chrome/android/java/res/layout/ntp_shortcuts.xml
|
|
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java
|
|
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java
|
|
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc
|
|
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-Simplified-NTP-launch.inc
|
|
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc
|
|
|
|
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
|
|
--- a/chrome/android/chrome_java_resources.gni
|
|
+++ b/chrome/android/chrome_java_resources.gni
|
|
@@ -555,6 +555,7 @@ chrome_java_resources = [
|
|
"java/res/layout/new_tab_page_tile_grid_placeholder.xml",
|
|
"java/res/layout/one_line_list_item.xml",
|
|
"java/res/layout/open_full_chrome_history_header.xml",
|
|
+ "java/res/layout/ntp_shortcuts.xml",
|
|
"java/res/layout/optional_toolbar_button.xml",
|
|
"java/res/layout/os_version_unsupported_text.xml",
|
|
"java/res/layout/other_forms_of_history_dialog.xml",
|
|
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
|
|
--- a/chrome/android/chrome_java_sources.gni
|
|
+++ b/chrome/android/chrome_java_sources.gni
|
|
@@ -590,6 +590,7 @@ chrome_java_sources = [
|
|
"java/src/org/chromium/chrome/browser/feedback/FeedFeedbackCollector.java",
|
|
"java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java",
|
|
"java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java",
|
|
+ "java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java",
|
|
"java/src/org/chromium/chrome/browser/findinpage/FindToolbar.java",
|
|
"java/src/org/chromium/chrome/browser/findinpage/FindToolbarManager.java",
|
|
"java/src/org/chromium/chrome/browser/findinpage/FindToolbarObserver.java",
|
|
@@ -1002,6 +1003,7 @@ chrome_java_sources = [
|
|
"java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesMetadataUtils.java",
|
|
"java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java",
|
|
"java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesLayout.java",
|
|
+ "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java",
|
|
"java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java",
|
|
"java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesProperties.java",
|
|
"java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesViewBinder.java",
|
|
diff --git a/chrome/android/java/res/layout/mv_tiles_container.xml b/chrome/android/java/res/layout/mv_tiles_container.xml
|
|
--- a/chrome/android/java/res/layout/mv_tiles_container.xml
|
|
+++ b/chrome/android/java/res/layout/mv_tiles_container.xml
|
|
@@ -31,7 +31,7 @@ found in the LICENSE file.
|
|
<!-- Site suggestion tile grid placeholder -->
|
|
<ViewStub
|
|
android:id="@+id/mv_tiles_placeholder_stub"
|
|
- android:layout_width="wrap_content"
|
|
+ android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:inflatedId="@+id/tile_grid_placeholder"
|
|
android:layout="@layout/new_tab_page_tile_grid_placeholder" />
|
|
diff --git a/chrome/android/java/res/layout/mv_tiles_layout.xml b/chrome/android/java/res/layout/mv_tiles_layout.xml
|
|
--- a/chrome/android/java/res/layout/mv_tiles_layout.xml
|
|
+++ b/chrome/android/java/res/layout/mv_tiles_layout.xml
|
|
@@ -5,14 +5,9 @@ Use of this source code is governed by a BSD-style license that can be
|
|
found in the LICENSE file.
|
|
-->
|
|
|
|
-<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
|
+<org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesGridLayout
|
|
+ xmlns:android="http://schemas.android.com/apk/res/android"
|
|
+ android:id="@+id/mv_tiles_layout"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
- android:scrollbars="none">
|
|
-
|
|
- <org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesLayout
|
|
- android:id="@+id/mv_tiles_layout"
|
|
- android:layout_width="wrap_content"
|
|
- android:layout_height="match_parent"
|
|
- android:orientation="horizontal" />
|
|
-</HorizontalScrollView>
|
|
+ android:layout_gravity="center_horizontal" />
|
|
diff --git a/chrome/android/java/res/layout/new_tab_page_layout.xml b/chrome/android/java/res/layout/new_tab_page_layout.xml
|
|
--- a/chrome/android/java/res/layout/new_tab_page_layout.xml
|
|
+++ b/chrome/android/java/res/layout/new_tab_page_layout.xml
|
|
@@ -37,6 +37,13 @@ found in the LICENSE file.
|
|
android:layout_marginTop="16dp"
|
|
android:visibility="gone"/>
|
|
|
|
+ <ViewStub
|
|
+ android:id="@+id/shortcuts_stub"
|
|
+ android:layout_width="match_parent"
|
|
+ android:layout_height="wrap_content"
|
|
+ android:inflatedId="@+id/shortcuts"
|
|
+ android:layout="@layout/ntp_shortcuts" />
|
|
+
|
|
<!-- Middle spacer -->
|
|
<View
|
|
android:id="@+id/ntp_middle_spacer"
|
|
diff --git a/chrome/android/java/res/layout/new_tab_page_tile_grid_placeholder.xml b/chrome/android/java/res/layout/new_tab_page_tile_grid_placeholder.xml
|
|
--- a/chrome/android/java/res/layout/new_tab_page_tile_grid_placeholder.xml
|
|
+++ b/chrome/android/java/res/layout/new_tab_page_tile_grid_placeholder.xml
|
|
@@ -17,14 +17,14 @@ found in the LICENSE file.
|
|
android:orientation="vertical">
|
|
|
|
<ImageView
|
|
- android:layout_width="wrap_content"
|
|
+ android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginBottom="15dp"
|
|
tools:ignore="ContentDescription"
|
|
android:src="@drawable/ic_most_visited_placeholder" />
|
|
|
|
<TextView
|
|
- android:layout_width="wrap_content"
|
|
+ android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginBottom="8dp"
|
|
android:color="#c8c8c8"
|
|
@@ -33,11 +33,11 @@ found in the LICENSE file.
|
|
android:textSize="16sp" />
|
|
|
|
<TextView
|
|
- android:layout_width="wrap_content"
|
|
+ android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:color="#c8c8c8"
|
|
android:gravity="center_horizontal"
|
|
android:text="@string/most_visited_placeholder_summary"
|
|
android:textSize="12sp" />
|
|
|
|
-</LinearLayout>
|
|
\ No newline at end of file
|
|
+</LinearLayout>
|
|
diff --git a/chrome/android/java/res/layout/ntp_shortcuts.xml b/chrome/android/java/res/layout/ntp_shortcuts.xml
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/chrome/android/java/res/layout/ntp_shortcuts.xml
|
|
@@ -0,0 +1,65 @@
|
|
+<?xml version="1.0" encoding="utf-8"?>
|
|
+<!-- Copyright 2018 The Chromium Authors. All rights reserved.
|
|
+ Use of this source code is governed by a BSD-style license that can be
|
|
+ found in the LICENSE file. -->
|
|
+
|
|
+<LinearLayout
|
|
+ xmlns:android="http://schemas.android.com/apk/res/android"
|
|
+ xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
+ android:id="@+id/shortcuts"
|
|
+ android:layout_width="match_parent"
|
|
+ android:layout_height="wrap_content"
|
|
+ android:paddingStart="16dp"
|
|
+ android:paddingEnd="16dp"
|
|
+ android:baselineAligned="false"
|
|
+ android:gravity="center"
|
|
+ android:orientation="horizontal" >
|
|
+
|
|
+ <FrameLayout
|
|
+ android:id="@+id/bookmarks_button"
|
|
+ android:layout_width="0dp"
|
|
+ android:layout_weight="1"
|
|
+ android:layout_height="wrap_content"
|
|
+ android:minHeight="48dp"
|
|
+ android:background="?attr/selectableItemBackground"
|
|
+ android:paddingTop="4dp"
|
|
+ android:paddingBottom="4dp" >
|
|
+
|
|
+ <org.chromium.components.browser_ui.widget.text.TextViewWithCompoundDrawables
|
|
+ android:layout_width="wrap_content"
|
|
+ android:layout_height="wrap_content"
|
|
+ android:gravity="center"
|
|
+ android:layout_gravity="center"
|
|
+ android:drawablePadding="8dp"
|
|
+ android:drawableStart="@drawable/btn_star_filled"
|
|
+ android:text="@string/menu_bookmarks"
|
|
+ android:textAppearance="@style/TextAppearance.TextSmall.Secondary"
|
|
+ app:drawableHeight="20sp"
|
|
+ app:drawableWidth="20sp"
|
|
+ app:chromeDrawableTint="@color/default_icon_color_light" />
|
|
+ </FrameLayout>
|
|
+
|
|
+ <FrameLayout
|
|
+ android:id="@+id/downloads_button"
|
|
+ android:layout_width="0dp"
|
|
+ android:layout_weight="1"
|
|
+ android:layout_height="wrap_content"
|
|
+ android:minHeight="48dp"
|
|
+ android:background="?attr/selectableItemBackground"
|
|
+ android:paddingTop="4dp"
|
|
+ android:paddingBottom="4dp" >
|
|
+
|
|
+ <org.chromium.components.browser_ui.widget.text.TextViewWithCompoundDrawables
|
|
+ android:layout_width="wrap_content"
|
|
+ android:layout_height="wrap_content"
|
|
+ android:gravity="center"
|
|
+ android:layout_gravity="center"
|
|
+ android:drawablePadding="8dp"
|
|
+ android:drawableStart="@drawable/ic_file_download_white_24dp"
|
|
+ android:text="@string/menu_downloads"
|
|
+ android:textAppearance="@style/TextAppearance.TextSmall.Secondary"
|
|
+ app:drawableHeight="20sp"
|
|
+ app:drawableWidth="20sp"
|
|
+ app:chromeDrawableTint="@color/default_icon_color_light" />
|
|
+ </FrameLayout>
|
|
+</LinearLayout>
|
|
diff --git a/chrome/android/java/res/values/attrs.xml b/chrome/android/java/res/values/attrs.xml
|
|
--- a/chrome/android/java/res/values/attrs.xml
|
|
+++ b/chrome/android/java/res/values/attrs.xml
|
|
@@ -15,6 +15,10 @@ found in the LICENSE file.
|
|
<attr name="emptyErrorMessage" format="string" />
|
|
</declare-styleable>
|
|
|
|
+ <declare-styleable name="MostVisitedTilesGridLayout">
|
|
+ <attr name="minHorizontalSpacing" format="dimension"/>
|
|
+ </declare-styleable>
|
|
+
|
|
<declare-styleable name="ExploreSitesTileView">
|
|
<attr name="iconCornerRadius" format="dimension"/>
|
|
</declare-styleable>
|
|
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
|
|
--- a/chrome/android/java/res/values/dimens.xml
|
|
+++ b/chrome/android/java/res/values/dimens.xml
|
|
@@ -126,6 +126,8 @@ found in the LICENSE file.
|
|
<dimen name="find_in_page_popup_margin_end">62dp</dimen>
|
|
|
|
<!-- NTP dimensions -->
|
|
+ <dimen name="tile_grid_layout_vertical_spacing">6dp</dimen>
|
|
+ <dimen name="tile_grid_layout_min_horizontal_spacing">4dp</dimen>
|
|
<dimen name="tile_layout_no_logo_top_margin">20dp</dimen>
|
|
<dimen name="mvt_container_lateral_margin">@dimen/signin_promo_lateral_paddings</dimen>
|
|
<dimen name="mvt_container_top_padding">17dp</dimen>
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
|
@@ -3042,7 +3042,8 @@ public class ChromeTabbedActivity extends ChromeActivity {
|
|
getToolbarManager().getTabStripHeightSupplier(),
|
|
mModuleRegistrySupplier,
|
|
mEdgeToEdgeControllerSupplier,
|
|
- getStartupMetricsTracker());
|
|
+ getStartupMetricsTracker(),
|
|
+ mBookmarkManagerOpenerSupplier);
|
|
}
|
|
return mTabDelegateFactory;
|
|
}
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java
|
|
@@ -15,6 +15,7 @@ import org.chromium.base.supplier.OneshotSupplier;
|
|
import org.chromium.base.supplier.Supplier;
|
|
import org.chromium.chrome.browser.app.ChromeActivity;
|
|
import org.chromium.chrome.browser.app.tab_activity_glue.ActivityTabWebContentsDelegateAndroid;
|
|
+import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener;
|
|
import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider;
|
|
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
|
|
import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator;
|
|
@@ -82,6 +83,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
|
|
private final OneshotSupplier<ModuleRegistry> mModuleRegistrySupplier;
|
|
private final ObservableSupplier<EdgeToEdgeController> mEdgeToEdgeControllerSupplier;
|
|
private final StartupMetricsTracker mStartupMetricsTracker;
|
|
+ private final ObservableSupplier<BookmarkManagerOpener> mBookmarkManagerOpenerSupplier;
|
|
|
|
private NativePageFactory mNativePageFactory;
|
|
|
|
@@ -111,7 +113,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
|
|
@NonNull ObservableSupplier<Integer> tabStripHeightSupplier,
|
|
@NonNull OneshotSupplier<ModuleRegistry> moduleRegistrySupplier,
|
|
@NonNull ObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier,
|
|
- StartupMetricsTracker startupMetricsTracker) {
|
|
+ StartupMetricsTracker startupMetricsTracker,
|
|
+ @NonNull ObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
|
|
mActivity = activity;
|
|
mAppBrowserControlsVisibilityDelegate = appBrowserControlsVisibilityDelegate;
|
|
mShareDelegateSupplier = shareDelegateSupplier;
|
|
@@ -138,6 +141,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
|
|
mModuleRegistrySupplier = moduleRegistrySupplier;
|
|
mEdgeToEdgeControllerSupplier = edgeToEdgeControllerSupplier;
|
|
mStartupMetricsTracker = startupMetricsTracker;
|
|
+ mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier;
|
|
}
|
|
|
|
@Override
|
|
@@ -204,7 +208,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
|
|
mTabStripHeightSupplier,
|
|
mModuleRegistrySupplier,
|
|
mEdgeToEdgeControllerSupplier,
|
|
- mStartupMetricsTracker);
|
|
+ mStartupMetricsTracker,
|
|
+ mBookmarkManagerOpenerSupplier);
|
|
}
|
|
return mNativePageFactory.createNativePage(url, candidatePage, tab, pdfInfo);
|
|
}
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java
|
|
@@ -68,6 +68,7 @@ public class ChromeFeedbackCollector extends FeedbackCollector<ChromeFeedbackCol
|
|
sources.add(new IMEFeedbackSource());
|
|
sources.add(new OmniboxFeedbackSource());
|
|
sources.add(new PermissionFeedbackSource());
|
|
+ sources.add(new SimplifiedNtpFeedbackSource());
|
|
sources.add(new FeedbackContextFeedbackSource(initParams.feedbackContext));
|
|
sources.add(
|
|
new AutoDarkFeedbackSource(initParams.profile, activity, new GURL(initParams.url)));
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java b/chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java
|
|
@@ -0,0 +1,38 @@
|
|
+// Copyright 2018 The Chromium Authors. All rights reserved.
|
|
+// Use of this source code is governed by a BSD-style license that can be
|
|
+// found in the LICENSE file.
|
|
+
|
|
+package org.chromium.chrome.browser.feedback;
|
|
+
|
|
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
|
+import org.chromium.chrome.browser.ntp.NewTabPageLayout;
|
|
+
|
|
+import java.util.HashMap;
|
|
+import java.util.Map;
|
|
+
|
|
+/**
|
|
+ * Provides information about whether the simplified NTP is enabled for use in feedback reports.
|
|
+ */
|
|
+public class SimplifiedNtpFeedbackSource implements FeedbackSource {
|
|
+ private static final String SIMPLIFIED_NTP_KEY = "Simplified NTP";
|
|
+ private static final String ENABLED_VALUE = "Enabled";
|
|
+ private static final String DISABLED_VALUE = "Disabled";
|
|
+
|
|
+ private final HashMap<String, String> mMap;
|
|
+
|
|
+ SimplifiedNtpFeedbackSource() {
|
|
+ mMap = new HashMap<String, String>(1);
|
|
+
|
|
+ boolean isEnabled = ChromeFeatureList.isEnabled(ChromeFeatureList.SIMPLIFIED_NTP);
|
|
+ if (!isEnabled) {
|
|
+ mMap.put(SIMPLIFIED_NTP_KEY, DISABLED_VALUE);
|
|
+ } else {
|
|
+ mMap.put(SIMPLIFIED_NTP_KEY, ENABLED_VALUE);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public Map<String, String> getFeedback() {
|
|
+ return mMap;
|
|
+ }
|
|
+}
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java
|
|
@@ -167,7 +167,10 @@ public class IdentityDiscController
|
|
|
|
mButtonData.setButtonSpec(
|
|
buttonSpecWithDrawableAndDescription(mButtonData.getButtonSpec(), email));
|
|
- mButtonData.setCanShow(true);
|
|
+ if (email == null)
|
|
+ mButtonData.setCanShow(false);
|
|
+ else
|
|
+ mButtonData.setCanShow(true);
|
|
}
|
|
|
|
private ButtonSpec buttonSpecWithDrawableAndDescription(
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
|
|
@@ -22,6 +22,7 @@ import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
|
|
import org.chromium.chrome.browser.app.ChromeActivity;
|
|
import org.chromium.chrome.browser.app.download.home.DownloadPage;
|
|
import org.chromium.chrome.browser.bookmarks.BookmarkPage;
|
|
+import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener;
|
|
import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginSupplier;
|
|
import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider;
|
|
import org.chromium.chrome.browser.fullscreen.BrowserControlsManager;
|
|
@@ -78,6 +79,7 @@ public class NativePageFactory {
|
|
private final OneshotSupplier<ModuleRegistry> mModuleRegistrySupplier;
|
|
private final ObservableSupplier<EdgeToEdgeController> mEdgeToEdgeControllerSupplier;
|
|
private final StartupMetricsTracker mStartupMetricsTracker;
|
|
+ private final ObservableSupplier<BookmarkManagerOpener> mBookmarkManagerOpenerSupplier;
|
|
private NewTabPageCreationTracker mNewTabPageCreationTracker;
|
|
|
|
private NativePageBuilder mNativePageBuilder;
|
|
@@ -100,7 +102,8 @@ public class NativePageFactory {
|
|
@NonNull ObservableSupplier<Integer> tabStripHeightSupplier,
|
|
@NonNull OneshotSupplier<ModuleRegistry> moduleRegistrySupplier,
|
|
@NonNull ObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier,
|
|
- @NonNull StartupMetricsTracker startupMetricsTracker) {
|
|
+ @NonNull StartupMetricsTracker startupMetricsTracker,
|
|
+ @NonNull ObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
|
|
mActivity = activity;
|
|
mBottomSheetController = sheetController;
|
|
mBrowserControlsManager = browserControlsManager;
|
|
@@ -118,6 +121,7 @@ public class NativePageFactory {
|
|
mModuleRegistrySupplier = moduleRegistrySupplier;
|
|
mEdgeToEdgeControllerSupplier = edgeToEdgeControllerSupplier;
|
|
mStartupMetricsTracker = startupMetricsTracker;
|
|
+ mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier;
|
|
}
|
|
|
|
private NativePageBuilder getBuilder() {
|
|
@@ -141,7 +145,8 @@ public class NativePageFactory {
|
|
mTabStripHeightSupplier,
|
|
mModuleRegistrySupplier,
|
|
mEdgeToEdgeControllerSupplier,
|
|
- mStartupMetricsTracker);
|
|
+ mStartupMetricsTracker,
|
|
+ mBookmarkManagerOpenerSupplier);
|
|
}
|
|
return mNativePageBuilder;
|
|
}
|
|
@@ -174,9 +179,10 @@ public class NativePageFactory {
|
|
private final OneshotSupplier<ModuleRegistry> mModuleRegistrySupplier;
|
|
private final ObservableSupplier<EdgeToEdgeController> mEdgeToEdgeControllerSupplier;
|
|
private final StartupMetricsTracker mStartupMetricsTracker;
|
|
+ private final ObservableSupplier<BookmarkManagerOpener> mBookmarkManagerOpenerSupplier;
|
|
|
|
public NativePageBuilder(
|
|
- Activity activity,
|
|
+ ChromeActivity activity,
|
|
Supplier<NewTabPageCreationTracker> newTabPageCreationTracker,
|
|
BottomSheetController sheetController,
|
|
BrowserControlsManager browserControlsManager,
|
|
@@ -193,7 +199,8 @@ public class NativePageFactory {
|
|
ObservableSupplier<Integer> tabStripHeightSupplier,
|
|
OneshotSupplier<ModuleRegistry> moduleRegistrySupplier,
|
|
ObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier,
|
|
- StartupMetricsTracker startupMetricsTracker) {
|
|
+ StartupMetricsTracker startupMetricsTracker,
|
|
+ @NonNull ObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
|
|
mActivity = activity;
|
|
mNewTabPageCreationTracker = newTabPageCreationTracker;
|
|
mBottomSheetController = sheetController;
|
|
@@ -212,6 +219,7 @@ public class NativePageFactory {
|
|
mModuleRegistrySupplier = moduleRegistrySupplier;
|
|
mEdgeToEdgeControllerSupplier = edgeToEdgeControllerSupplier;
|
|
mStartupMetricsTracker = startupMetricsTracker;
|
|
+ mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier;
|
|
}
|
|
|
|
protected NativePage buildNewTabPage(Tab tab, String url) {
|
|
@@ -245,7 +253,8 @@ public class NativePageFactory {
|
|
mTabStripHeightSupplier,
|
|
mModuleRegistrySupplier,
|
|
mEdgeToEdgeControllerSupplier,
|
|
- mStartupMetricsTracker);
|
|
+ mStartupMetricsTracker,
|
|
+ mBookmarkManagerOpenerSupplier);
|
|
}
|
|
|
|
protected NativePage buildBookmarksPage(Tab tab) {
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java
|
|
@@ -25,7 +25,7 @@ import org.chromium.ui.mojom.WindowOpenDisposition;
|
|
|
|
/** {@link NativePageNavigationDelegate} implementation. */
|
|
public class NativePageNavigationDelegateImpl implements NativePageNavigationDelegate {
|
|
- private final Profile mProfile;
|
|
+ protected final Profile mProfile;
|
|
|
|
protected final TabModelSelector mTabModelSelector;
|
|
protected final Tab mTab;
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
|
|
@@ -117,6 +117,9 @@ import org.chromium.ui.base.DeviceFormFactor;
|
|
import org.chromium.ui.base.WindowAndroid;
|
|
import org.chromium.url.GURL;
|
|
|
|
+import androidx.annotation.NonNull;
|
|
+import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener;
|
|
+
|
|
import java.util.List;
|
|
|
|
/** Provides functionality when the user interacts with the NTP. */
|
|
@@ -481,7 +484,8 @@ public class NewTabPage
|
|
ObservableSupplier<Integer> tabStripHeightSupplier,
|
|
OneshotSupplier<ModuleRegistry> moduleRegistrySupplier,
|
|
ObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier,
|
|
- StartupMetricsTracker startupMetricsTracker) {
|
|
+ StartupMetricsTracker startupMetricsTracker,
|
|
+ @NonNull ObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
|
|
mConstructedTimeNs = System.nanoTime();
|
|
TraceEvent.begin(TAG);
|
|
|
|
@@ -505,7 +509,7 @@ public class NewTabPage
|
|
|
|
SuggestionsNavigationDelegate navigationDelegate =
|
|
new SuggestionsNavigationDelegate(
|
|
- activity, profile, nativePageHost, tabModelSelector, mTab);
|
|
+ activity, profile, nativePageHost, tabModelSelector, mTab, bookmarkManagerOpenerSupplier);
|
|
mNewTabPageManager =
|
|
new NewTabPageManagerImpl(
|
|
navigationDelegate, profile, nativePageHost, snackbarManager);
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
|
|
@@ -14,6 +14,7 @@ import android.text.Editable;
|
|
import android.util.AttributeSet;
|
|
import android.view.DragEvent;
|
|
import android.view.LayoutInflater;
|
|
+import android.view.ViewStub;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.ImageView;
|
|
@@ -33,6 +34,7 @@ import org.chromium.base.supplier.ObservableSupplier;
|
|
import org.chromium.chrome.R;
|
|
import org.chromium.chrome.browser.feed.FeedSurfaceScrollDelegate;
|
|
import org.chromium.chrome.browser.lens.LensEntryPoint;
|
|
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
|
import org.chromium.chrome.browser.lens.LensMetrics;
|
|
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
|
|
import org.chromium.chrome.browser.logo.LogoBridge.Logo;
|
|
@@ -48,7 +50,7 @@ import org.chromium.chrome.browser.profiles.Profile;
|
|
import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesCoordinator;
|
|
import org.chromium.chrome.browser.suggestions.tile.TileGroup;
|
|
import org.chromium.chrome.browser.suggestions.tile.TileGroup.Delegate;
|
|
-import org.chromium.chrome.browser.suggestions.tile.TilesLinearLayout;
|
|
+import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesGridLayout;
|
|
import org.chromium.chrome.browser.tab_ui.InvalidationAwareThumbnailProvider;
|
|
import org.chromium.chrome.browser.ui.native_page.TouchEnabledDelegate;
|
|
import org.chromium.chrome.browser.util.BrowserUiUtils;
|
|
@@ -90,6 +92,8 @@ public class NewTabPageLayout extends LinearLayout
|
|
private @Nullable DisplayStyleObserver mDisplayStyleObserver;
|
|
private CallbackController mCallbackController = new CallbackController();
|
|
|
|
+ private ViewGroup mShortcutsView;
|
|
+
|
|
/**
|
|
* Whether the tiles shown in the layout have finished loading.
|
|
* With {@link #mHasShownView}, it's one of the 2 flags used to track initialisation progress.
|
|
@@ -102,7 +106,7 @@ public class NewTabPageLayout extends LinearLayout
|
|
*/
|
|
private boolean mHasShownView;
|
|
|
|
- private boolean mSearchProviderHasLogo = true;
|
|
+ private boolean mSearchProviderHasLogo = false;
|
|
private boolean mSearchProviderIsGoogle;
|
|
private boolean mShowingNonStandardGoogleLogo;
|
|
|
|
@@ -256,6 +260,7 @@ public class NewTabPageLayout extends LinearLayout
|
|
initializeMostVisitedTilesCoordinator(
|
|
mProfile, lifecycleDispatcher, tileGroupDelegate, touchEnabledDelegate);
|
|
initializeDseIconView(searchProviderIsGoogle);
|
|
+ initializeShortcuts();
|
|
initializeSearchBoxTextView();
|
|
initializeVoiceSearchButton();
|
|
initializeLensButton();
|
|
@@ -553,7 +558,7 @@ public class NewTabPageLayout extends LinearLayout
|
|
|
|
if (mInitialTileNum == null) {
|
|
mInitialTileNum =
|
|
- ((TilesLinearLayout) findViewById(R.id.mv_tiles_layout)).getTileCount();
|
|
+ ((MostVisitedTilesGridLayout) findViewById(R.id.mv_tiles_layout)).getTileCount();
|
|
}
|
|
|
|
int currentOrientation = getResources().getConfiguration().orientation;
|
|
@@ -621,7 +626,7 @@ public class NewTabPageLayout extends LinearLayout
|
|
&& mInitialized) {
|
|
return;
|
|
}
|
|
- mSearchProviderHasLogo = hasLogo;
|
|
+ mSearchProviderHasLogo = false;
|
|
mSearchProviderIsGoogle = isGoogle;
|
|
|
|
if (!mSearchProviderIsGoogle) {
|
|
@@ -948,6 +953,22 @@ public class NewTabPageLayout extends LinearLayout
|
|
return mMostVisitedTilesCoordinator;
|
|
}
|
|
|
|
+ private void initializeShortcuts() {
|
|
+ if (!ChromeFeatureList.isEnabled(ChromeFeatureList.SIMPLIFIED_NTP)) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ ViewStub shortcutsStub = findViewById(R.id.shortcuts_stub);
|
|
+ mShortcutsView = (ViewGroup) shortcutsStub.inflate();
|
|
+
|
|
+ mShortcutsView.findViewById(R.id.bookmarks_button)
|
|
+ .setOnClickListener(view -> mManager.getNavigationDelegate().navigateToBookmarks());
|
|
+
|
|
+ mShortcutsView.findViewById(R.id.downloads_button)
|
|
+ .setOnClickListener(
|
|
+ view -> mManager.getNavigationDelegate().navigateToDownloadManager());
|
|
+ }
|
|
+
|
|
/** Makes the Search Box and Logo as wide as Most Visited. */
|
|
private void unifyElementWidths() {
|
|
View searchBoxView = getSearchBoxView();
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java
|
|
@@ -24,7 +24,7 @@ public final class SuggestionsConfig {
|
|
* Maximum number of tiles that is explicitly supported. UMA relies on this value, so even if
|
|
* the UI supports it, getting more can raise unexpected issues.
|
|
*/
|
|
- public static final int MAX_TILE_COUNT = 12;
|
|
+ public static final int MAX_TILE_COUNT = 24;
|
|
|
|
/** Maximum number of custom tiles supported. In C++ backend this is `kMaxNumCustomLinks`. */
|
|
public static final int MAX_NUM_CUSTOM_LINKS = 8;
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java
|
|
@@ -22,16 +22,41 @@ import org.chromium.ui.base.PageTransition;
|
|
import org.chromium.ui.mojom.WindowOpenDisposition;
|
|
import org.chromium.url.GURL;
|
|
|
|
+import androidx.annotation.NonNull;
|
|
+import org.chromium.base.supplier.ObservableSupplier;
|
|
+import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
|
|
+import org.chromium.chrome.browser.download.DownloadUtils;
|
|
+import org.chromium.chrome.browser.download.DownloadOpenSource;
|
|
+import org.chromium.chrome.browser.profiles.OtrProfileId;
|
|
+import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener;
|
|
+
|
|
/** Extension of {@link NativePageNavigationDelegate} with suggestions-specific methods. */
|
|
public class SuggestionsNavigationDelegate extends NativePageNavigationDelegateImpl {
|
|
|
|
+ private final @NonNull ObservableSupplier<BookmarkManagerOpener> mBookmarkManagerOpenerSupplier;
|
|
+
|
|
public SuggestionsNavigationDelegate(
|
|
Activity activity,
|
|
Profile profile,
|
|
NativePageHost host,
|
|
TabModelSelector tabModelSelector,
|
|
- Tab tab) {
|
|
+ Tab tab,
|
|
+ @NonNull ObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
|
|
super(activity, profile, host, tabModelSelector, tab);
|
|
+ mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier;
|
|
+ }
|
|
+
|
|
+ public void navigateToBookmarks() {
|
|
+ mBookmarkManagerOpenerSupplier.get()
|
|
+ .showBookmarkManager(mActivity, mTab.getProfile());
|
|
+ }
|
|
+
|
|
+ public void navigateToDownloadManager() {
|
|
+ OtrProfileId otrProfileID = null;
|
|
+ if (mProfile != null && mTab != null && mTab.isIncognito()) {
|
|
+ otrProfileID = mProfile.getOtrProfileId();
|
|
+ }
|
|
+ DownloadUtils.showDownloadManager(mActivity, mTab, otrProfileID, DownloadOpenSource.NEW_TAB_PAGE);
|
|
}
|
|
|
|
/**
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java
|
|
@@ -65,15 +65,11 @@ public class MostVisitedTilesCoordinator implements ConfigurationChangedObserver
|
|
mWindowAndroid = windowAndroid;
|
|
|
|
((ViewStub) mvTilesContainerLayout.findViewById(R.id.mv_tiles_layout_stub)).inflate();
|
|
- MostVisitedTilesLayout tilesLayout =
|
|
+ MostVisitedTilesGridLayout tilesLayout =
|
|
mvTilesContainerLayout.findViewById(R.id.mv_tiles_layout);
|
|
|
|
mUiConfig = new UiConfig(tilesLayout);
|
|
PropertyModel propertyModel = new PropertyModel(MostVisitedTilesProperties.ALL_KEYS);
|
|
- PropertyModelChangeProcessor.create(
|
|
- propertyModel,
|
|
- new MostVisitedTilesViewBinder.ViewHolder(mvTilesContainerLayout, tilesLayout),
|
|
- MostVisitedTilesViewBinder::bind);
|
|
mRenderer =
|
|
new TileRenderer(
|
|
mActivity, SuggestionsConfig.getTileStyle(mUiConfig), TITLE_LINES, null);
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java
|
|
@@ -0,0 +1,287 @@
|
|
+// Copyright 2015 The Chromium Authors
|
|
+// Use of this source code is governed by a BSD-style license that can be
|
|
+// found in the LICENSE file.
|
|
+
|
|
+package org.chromium.chrome.browser.suggestions.tile;
|
|
+
|
|
+import android.content.Context;
|
|
+import android.content.res.Configuration;
|
|
+import android.content.res.Resources;
|
|
+import android.content.res.TypedArray;
|
|
+import android.util.AttributeSet;
|
|
+import android.util.Pair;
|
|
+import android.view.View;
|
|
+import android.widget.FrameLayout;
|
|
+
|
|
+import androidx.annotation.Nullable;
|
|
+import androidx.annotation.VisibleForTesting;
|
|
+
|
|
+import org.chromium.base.MathUtils;
|
|
+import org.chromium.base.library_loader.LibraryLoader;
|
|
+import org.chromium.chrome.R;
|
|
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
|
+import org.chromium.chrome.browser.suggestions.SiteSuggestion;
|
|
+import org.chromium.components.browser_ui.widget.tile.TileView;
|
|
+import org.chromium.ui.base.DeviceFormFactor;
|
|
+
|
|
+import java.util.ArrayList;
|
|
+import java.util.List;
|
|
+
|
|
+/** A layout that arranges tiles in a grid. */
|
|
+public class MostVisitedTilesGridLayout extends FrameLayout {
|
|
+ private final int mMinHorizontalSpacing;
|
|
+ private final int mMaxHorizontalSpacing;
|
|
+ private final int mMaxWidth;
|
|
+
|
|
+ private int mVerticalSpacing;
|
|
+ private int mMaxRows = 4;
|
|
+ private int mMaxColumns = 4;
|
|
+
|
|
+ private List<TileView> mTileList = new ArrayList<TileView>();
|
|
+
|
|
+ /**
|
|
+ * Constructor for inflating from XML.
|
|
+ *
|
|
+ * @param context The view context in which this item will be shown.
|
|
+ * @param attrs The attributes of the XML tag that is inflating the view.
|
|
+ */
|
|
+ public MostVisitedTilesGridLayout(Context context, AttributeSet attrs) {
|
|
+ super(context, attrs);
|
|
+
|
|
+ Resources res = getResources();
|
|
+ mVerticalSpacing =
|
|
+ getResources().getDimensionPixelOffset(getGridMVTVerticalSpacingResourcesId());
|
|
+ TypedArray styledAttrs =
|
|
+ context.obtainStyledAttributes(attrs, R.styleable.MostVisitedTilesGridLayout);
|
|
+ mMinHorizontalSpacing =
|
|
+ styledAttrs.getDimensionPixelOffset(
|
|
+ R.styleable.MostVisitedTilesGridLayout_minHorizontalSpacing,
|
|
+ res.getDimensionPixelOffset(
|
|
+ R.dimen.tile_grid_layout_min_horizontal_spacing));
|
|
+ styledAttrs.recycle();
|
|
+ mMaxHorizontalSpacing = Integer.MAX_VALUE;
|
|
+ mMaxWidth = Integer.MAX_VALUE;
|
|
+ }
|
|
+
|
|
+ /** Sets the maximum number of rows to display. Any items that don't fit will be hidden. */
|
|
+ public void setMaxRows(int rows) {
|
|
+ mMaxRows = rows;
|
|
+ }
|
|
+
|
|
+ /** Sets the maximum number of columns to display. Any items that don't fit will be hidden. */
|
|
+ public void setMaxColumns(int columns) {
|
|
+ mMaxColumns = columns;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
|
+ int totalWidth = Math.min(MeasureSpec.getSize(widthMeasureSpec), mMaxWidth);
|
|
+ int childCount = getChildCount();
|
|
+ if (childCount == 0) {
|
|
+ setMeasuredDimension(totalWidth, resolveSize(0, heightMeasureSpec));
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ // Measure the children. We don't use the ViewGroup.measureChildren() method here because
|
|
+ // it only measures visible children. In a situation where a child is invisible before
|
|
+ // this measurement and we decide to show it after the measurement, it will not have its
|
|
+ // dimensions and will not be displayed.
|
|
+ for (int i = 0; i < childCount; i++) {
|
|
+ measureChild(getChildAt(i), MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
|
|
+ }
|
|
+
|
|
+ // Determine the number of columns that will fit.
|
|
+ int childHeight = getChildAt(0).getMeasuredHeight();
|
|
+ int childWidth = getChildAt(0).getMeasuredWidth();
|
|
+ int numColumns =
|
|
+ MathUtils.clamp(
|
|
+ (totalWidth + mMinHorizontalSpacing) / (childWidth + mMinHorizontalSpacing),
|
|
+ 1,
|
|
+ mMaxColumns);
|
|
+
|
|
+ // Determine how much padding to use between and around the tiles.
|
|
+ int gridWidthMinusColumns = Math.max(0, totalWidth - numColumns * childWidth);
|
|
+ Pair<Integer, Integer> gridProperties =
|
|
+ computeHorizontalDimensions(gridWidthMinusColumns, numColumns);
|
|
+ int gridStart = gridProperties.first;
|
|
+ int horizontalSpacing = gridProperties.second;
|
|
+
|
|
+ // Limit the number of rows to mMaxRows.
|
|
+ int visibleChildCount = Math.min(childCount, mMaxRows * numColumns);
|
|
+
|
|
+ // Arrange the visible children in a grid.
|
|
+ int numRows = (visibleChildCount + numColumns - 1) / numColumns;
|
|
+ int paddingTop = getPaddingTop();
|
|
+ boolean isRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL;
|
|
+
|
|
+ for (int i = 0; i < visibleChildCount; i++) {
|
|
+ View child = getChildAt(i);
|
|
+ child.setVisibility(View.VISIBLE);
|
|
+ int row = i / numColumns;
|
|
+ int column = i % numColumns;
|
|
+ int childTop = row * (childHeight + mVerticalSpacing);
|
|
+ int childStart = gridStart + (column * (childWidth + horizontalSpacing));
|
|
+ MarginLayoutParams layoutParams = (MarginLayoutParams) child.getLayoutParams();
|
|
+ layoutParams.setMargins(isRtl ? 0 : childStart, childTop, isRtl ? childStart : 0, 0);
|
|
+ child.setLayoutParams(layoutParams);
|
|
+ }
|
|
+
|
|
+ // Hide any extra children in case there are more than needed for the maximum number of
|
|
+ // rows.
|
|
+ for (int i = visibleChildCount; i < childCount; i++) {
|
|
+ getChildAt(i).setVisibility(View.GONE);
|
|
+ }
|
|
+
|
|
+ int totalHeight =
|
|
+ paddingTop
|
|
+ + getPaddingBottom()
|
|
+ + numRows * childHeight
|
|
+ + (numRows - 1) * mVerticalSpacing;
|
|
+
|
|
+ setMeasuredDimension(totalWidth, resolveSize(totalHeight, heightMeasureSpec));
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * @param availableWidth The space available to spread between and around the tiles.
|
|
+ * @param numColumns The number of columns to be organised.
|
|
+ * @return The [gridStart, horizontalSpacing] pair of dimensions.
|
|
+ */
|
|
+ @VisibleForTesting
|
|
+ Pair<Integer, Integer> computeHorizontalDimensions(int availableWidth, int numColumns) {
|
|
+ int gridStart;
|
|
+ float horizontalSpacing;
|
|
+
|
|
+ // Identically sized spacers are added both between and around the tiles.
|
|
+ int spacerCount = numColumns + 1;
|
|
+ horizontalSpacing = (float) availableWidth / spacerCount;
|
|
+ gridStart = Math.round(horizontalSpacing);
|
|
+
|
|
+ if (horizontalSpacing < mMinHorizontalSpacing
|
|
+ || horizontalSpacing > mMaxHorizontalSpacing) {
|
|
+ // Ensure column spacing isn't greater than mMaxHorizontalSpacing.
|
|
+ long gridSidePadding = availableWidth - (long) mMaxHorizontalSpacing * (numColumns - 1);
|
|
+ if (gridSidePadding > 0) {
|
|
+ horizontalSpacing = mMaxHorizontalSpacing;
|
|
+ gridStart = (int) (gridSidePadding / 2);
|
|
+ } else {
|
|
+ horizontalSpacing = (float) availableWidth / Math.max(1, numColumns - 1);
|
|
+ gridStart = 0;
|
|
+ }
|
|
+ }
|
|
+ int screenWidth = getResources().getDisplayMetrics().widthPixels;
|
|
+ int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
|
+ String logMessage =
|
|
+ "|horizontalSpacing| = "
|
|
+ + horizontalSpacing
|
|
+ + " |numColumns| = "
|
|
+ + numColumns
|
|
+ + " |availableWidth| = "
|
|
+ + availableWidth
|
|
+ + " |screenWidth| = "
|
|
+ + screenWidth
|
|
+ + " |screenHeight| = "
|
|
+ + screenHeight
|
|
+ + ".";
|
|
+ assert horizontalSpacing >= mMinHorizontalSpacing
|
|
+ : "Horizontal spacing shouldn't be smaller than minimal horizontal spacing: "
|
|
+ + logMessage;
|
|
+ assert horizontalSpacing <= mMaxHorizontalSpacing
|
|
+ : "Horizontal spacing shouldn't be larger than maximal horizontal spacing: "
|
|
+ + logMessage;
|
|
+
|
|
+ return Pair.create(gridStart, Math.round(horizontalSpacing));
|
|
+ }
|
|
+
|
|
+ // TODO(crbug.com/40226731): Remove this method when the Feed position experiment is cleaned up.
|
|
+ private int getGridMVTVerticalSpacingResourcesId() {
|
|
+ return R.dimen.tile_grid_layout_vertical_spacing;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void removeAllViews() {
|
|
+ mTileList.clear();
|
|
+ super.removeAllViews();
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Updates the start margin of all children except the first, to control spacing between.
|
|
+ *
|
|
+ * @param margin The margin to set.
|
|
+ */
|
|
+ void setIntervalMargins(int margin) {
|
|
+ int childCount = getChildCount();
|
|
+ for (int i = 1; i < childCount; i++) {
|
|
+ updateViewStartMargin(getChildAt(i), margin);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Updates the start (end) margin the first (last) child, to control spacing around content.
|
|
+ *
|
|
+ * @param margin The margin to set.
|
|
+ */
|
|
+ void setEdgeMargins(int margin) {
|
|
+ int childCount = getChildCount();
|
|
+ if (childCount > 0) {
|
|
+ updateViewStartMargin(getChildAt(0), margin);
|
|
+ updateViewEndMargin(getChildAt(childCount - 1), margin);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Specialized addView() for tiles.
|
|
+ *
|
|
+ * @param tileView The tile View to add.
|
|
+ */
|
|
+ public void addTile(TileView tileView) {
|
|
+ super.addView(tileView);
|
|
+ mTileList.add(tileView);
|
|
+ }
|
|
+
|
|
+ public void addNonTileViewWithWidth(View view, float widthDp) {
|
|
+ super.addView(view);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Specialized getChildCount() for tiles.
|
|
+ *
|
|
+ * @return The count of TileView children, added from addTile().
|
|
+ */
|
|
+ public int getTileCount() {
|
|
+ return mTileList.size();
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Specialized getChildAt() for tiles.
|
|
+ *
|
|
+ * @return The (index+1)-th TileView added via addTile().
|
|
+ */
|
|
+ public TileView getTileAt(int index) {
|
|
+ return mTileList.get(index);
|
|
+ }
|
|
+
|
|
+ private void updateViewStartMargin(View view, int newStartMargin) {
|
|
+ MarginLayoutParams layoutParams = (MarginLayoutParams) view.getLayoutParams();
|
|
+ if (newStartMargin != layoutParams.getMarginStart()) {
|
|
+ layoutParams.setMarginStart(newStartMargin);
|
|
+ view.setLayoutParams(layoutParams);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ private void updateViewEndMargin(View view, int newEndMargin) {
|
|
+ MarginLayoutParams layoutParams = (MarginLayoutParams) view.getLayoutParams();
|
|
+ if (newEndMargin != layoutParams.getMarginEnd()) {
|
|
+ layoutParams.setMarginEnd(newEndMargin);
|
|
+ view.setLayoutParams(layoutParams);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ void destroy() {
|
|
+ for (int i = 0; i < getTileCount(); i++) {
|
|
+ TileView tileView = getTileAt(i);
|
|
+ tileView.setOnClickListener(null);
|
|
+ tileView.setOnCreateContextMenuListener(null);
|
|
+ }
|
|
+ removeAllViews();
|
|
+ }
|
|
+}
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java
|
|
@@ -36,7 +36,7 @@ public class MostVisitedTilesMediator implements TileGroup.Observer, TemplateUrl
|
|
|
|
private final Resources mResources;
|
|
private final UiConfig mUiConfig;
|
|
- private final MostVisitedTilesLayout mMvTilesLayout;
|
|
+ private final MostVisitedTilesGridLayout mMvTilesLayout;
|
|
private final ViewStub mNoMvPlaceholderStub;
|
|
private final PropertyModel mModel;
|
|
private final boolean mIsTablet;
|
|
@@ -58,7 +58,7 @@ public class MostVisitedTilesMediator implements TileGroup.Observer, TemplateUrl
|
|
public MostVisitedTilesMediator(
|
|
Resources resources,
|
|
UiConfig uiConfig,
|
|
- MostVisitedTilesLayout mvTilesLayout,
|
|
+ MostVisitedTilesGridLayout mvTilesLayout,
|
|
ViewStub noMvPlaceholderStub,
|
|
TileRenderer renderer,
|
|
PropertyModel propertyModel,
|
|
@@ -164,7 +164,6 @@ public class MostVisitedTilesMediator implements TileGroup.Observer, TemplateUrl
|
|
|
|
@Override
|
|
public void onCustomTileCreation(Tile tile) {
|
|
- mMvTilesLayout.ensureTileIsInViewOnNextLayout(tile.getIndex());
|
|
}
|
|
|
|
public void onConfigurationChanged() {
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileDragDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileDragDelegateImpl.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileDragDelegateImpl.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileDragDelegateImpl.java
|
|
@@ -64,7 +64,7 @@ class TileDragDelegateImpl implements TileGroup.TileDragDelegate, TileDragSessio
|
|
private static final float DOMINATE_TRESHOLD_RATIO = 0.4f;
|
|
|
|
// Parent container for dragged tiles.
|
|
- private final MostVisitedTilesLayout mMvTilesLayout;
|
|
+ private final MostVisitedTilesGridLayout mMvTilesLayout;
|
|
|
|
private final float mTileWidthPx;
|
|
|
|
@@ -85,7 +85,7 @@ class TileDragDelegateImpl implements TileGroup.TileDragDelegate, TileDragSessio
|
|
// Runnable to cancel tile movement that might not have completed yet, due to animation.
|
|
private @Nullable Runnable mPendingChangeCanceller;
|
|
|
|
- public TileDragDelegateImpl(MostVisitedTilesLayout mvTilesLayout) {
|
|
+ public TileDragDelegateImpl(MostVisitedTilesGridLayout mvTilesLayout) {
|
|
mMvTilesLayout = mvTilesLayout;
|
|
Resources res = mMvTilesLayout.getResources();
|
|
mTileWidthPx = res.getDimensionPixelSize(R.dimen.tile_view_width);
|
|
@@ -187,7 +187,7 @@ class TileDragDelegateImpl implements TileGroup.TileDragDelegate, TileDragSessio
|
|
|
|
@Override
|
|
public SiteSuggestion getTileViewData(TileView view) {
|
|
- return mMvTilesLayout.getTileViewData(view);
|
|
+ return null;
|
|
}
|
|
|
|
private void cancelPendingChange() {
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java
|
|
@@ -171,7 +171,7 @@ public class TileRenderer {
|
|
*/
|
|
public void renderTileSection(
|
|
List<Tile> sectionTiles,
|
|
- TilesLinearLayout parent,
|
|
+ MostVisitedTilesGridLayout parent,
|
|
TileGroup.TileSetupDelegate setupDelegate) {
|
|
try (TraceEvent e = TraceEvent.scoped("TileRenderer.renderTileSection")) {
|
|
// Map the old tile views by url so they can be reused later.
|
|
@@ -238,7 +238,7 @@ public class TileRenderer {
|
|
*/
|
|
@VisibleForTesting
|
|
SuggestionsTileView buildTileView(
|
|
- Tile tile, TilesLinearLayout parent, TileGroup.TileSetupDelegate setupDelegate) {
|
|
+ Tile tile, MostVisitedTilesGridLayout parent, TileGroup.TileSetupDelegate setupDelegate) {
|
|
SuggestionsTileView tileView =
|
|
(SuggestionsTileView)
|
|
LayoutInflater.from(parent.getContext())
|
|
@@ -315,7 +315,7 @@ public class TileRenderer {
|
|
return tileView;
|
|
}
|
|
|
|
- View buildDivider(TilesLinearLayout parent) {
|
|
+ View buildDivider(MostVisitedTilesGridLayout parent) {
|
|
return (View)
|
|
LayoutInflater.from(parent.getContext())
|
|
.inflate(R.layout.suggestions_tile_vertical_divider, parent, false);
|
|
@@ -336,7 +336,7 @@ public class TileRenderer {
|
|
}
|
|
|
|
TileView buildAddCustomLinksButton(
|
|
- TilesLinearLayout parent, TileGroup.TileSetupDelegate setupDelegate) {
|
|
+ MostVisitedTilesGridLayout parent, TileGroup.TileSetupDelegate setupDelegate) {
|
|
Resources res = mContext.getResources();
|
|
String title = res.getString(R.string.most_visited_add_new);
|
|
Drawable plusIcon =
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java
|
|
@@ -24,7 +24,7 @@ import java.util.List;
|
|
* #getChildCount()} and {@link #getChildAt()}.
|
|
*/
|
|
@NullMarked
|
|
-public class TilesLinearLayout extends LinearLayout {
|
|
+class TilesLinearLayout extends LinearLayout {
|
|
private final List<TileView> mTileList = new ArrayList<TileView>();
|
|
|
|
protected float mNonTileViewsTotalWidthDp;
|
|
diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/engagement/important_sites_util.cc
|
|
--- a/chrome/browser/engagement/important_sites_util.cc
|
|
+++ b/chrome/browser/engagement/important_sites_util.cc
|
|
@@ -60,7 +60,7 @@ static const int kTimesIgnoredForSuppression = 3;
|
|
// These are the maximum # of bookmarks we can use as signals. If the user has
|
|
// <= kMaxBookmarks, then we just use those bookmarks. Otherwise we filter all
|
|
// bookmarks on site engagement > 0, sort, and trim to kMaxBookmarks.
|
|
-static const int kMaxBookmarks = 5;
|
|
+static const int kMaxBookmarks = 4 * 4 + 2;
|
|
|
|
// We need this to be a macro, as the histogram macros cache their pointers
|
|
// after the first call, so when we change the uma name we check fail if we're
|
|
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
|
|
--- a/chrome/browser/flags/android/chrome_feature_list.cc
|
|
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
|
|
@@ -311,6 +311,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
|
|
&kIncognitoScreenshot,
|
|
&kInstanceSwitcherV2,
|
|
&kKeyboardEscBackNavigation,
|
|
+ &kSimplifiedNTP,
|
|
&kLensOnQuickActionSearchWidget,
|
|
&kMagicStackAndroid,
|
|
&kMayLaunchUrlUsesSeparateStoragePartition,
|
|
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
|
|
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
|
|
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
|
|
@@ -434,6 +434,7 @@ public abstract class ChromeFeatureList {
|
|
"MayLaunchUrlUsesSeparateStoragePartition";
|
|
public static final String MINI_ORIGIN_BAR = "MiniOriginBar";
|
|
public static final String MOST_VISITED_TILES_CUSTOMIZATION = "MostVisitedTilesCustomization";
|
|
+ public static final String SIMPLIFIED_NTP = "SimplifiedNTP";
|
|
public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox";
|
|
public static final String MOST_VISITED_TILES_RESELECT = "MostVisitedTilesReselect";
|
|
public static final String MULTI_INSTANCE_APPLICATION_STATUS_CLEANUP =
|
|
@@ -823,7 +824,7 @@ public abstract class ChromeFeatureList {
|
|
/* defaultValueInTests= */ true);
|
|
public static final CachedFlag sLockBackPressHandlerAtStart =
|
|
newCachedFlag(LOCK_BACK_PRESS_HANDLER_AT_START, true);
|
|
- public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, true);
|
|
+ public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, false);
|
|
public static final CachedFlag sMiniOriginBar = newCachedFlag(MINI_ORIGIN_BAR, false, true);
|
|
public static final CachedFlag sMostVisitedTilesCustomization =
|
|
newCachedFlag(MOST_VISITED_TILES_CUSTOMIZATION, false);
|
|
diff --git a/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java b/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java
|
|
--- a/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java
|
|
+++ b/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java
|
|
@@ -32,6 +32,7 @@ public final class HomeModulesRankingHelper {
|
|
Profile profile,
|
|
InputContext freshnessAndEphemeralInputs,
|
|
Callback<List<String>> callback) {
|
|
+ if ((true)) return;
|
|
HomeModulesRankingHelperJni.get()
|
|
.getClassificationResult(
|
|
profile,
|
|
diff --git a/components/history/core/browser/top_sites_impl.h b/components/history/core/browser/top_sites_impl.h
|
|
--- a/components/history/core/browser/top_sites_impl.h
|
|
+++ b/components/history/core/browser/top_sites_impl.h
|
|
@@ -40,7 +40,7 @@ class TopSitesImplTest;
|
|
struct SitesAndQueriesRequest;
|
|
|
|
// How many top sites to store in the cache.
|
|
-static constexpr size_t kTopSitesNumber = 10;
|
|
+static constexpr size_t kTopSitesNumber = 4 * 4 + 2;
|
|
|
|
// This class allows requests for most visited urls on any thread. All other
|
|
// methods must be invoked on the UI thread. All mutations to internal state
|
|
diff --git a/components/ntp_tiles/custom_links_store.cc b/components/ntp_tiles/custom_links_store.cc
|
|
--- a/components/ntp_tiles/custom_links_store.cc
|
|
+++ b/components/ntp_tiles/custom_links_store.cc
|
|
@@ -63,8 +63,6 @@ std::vector<CustomLinksManager::Link> CustomLinksStore::RetrieveLinks() {
|
|
|
|
if (!has_recorded_first_load_stats) {
|
|
has_recorded_first_load_stats = true;
|
|
- ntp_tiles::metrics::RecordNumberOfCustomTilesOnFirstNtp(
|
|
- static_cast<int>(links.size()));
|
|
}
|
|
|
|
return links;
|
|
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc b/cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc
|
|
@@ -0,0 +1,12 @@
|
|
+#if BUILDFLAG(IS_ANDROID)
|
|
+
|
|
+#ifdef FLAG_SECTION
|
|
+
|
|
+ {"simplified-ntp",
|
|
+ "Simplified NTP",
|
|
+ "Show a simplified New Tab Page.", kOsAndroid,
|
|
+ FEATURE_VALUE_TYPE(chrome::android::kSimplifiedNTP)},
|
|
+
|
|
+#endif
|
|
+
|
|
+#endif
|
|
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-Simplified-NTP-launch.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-Simplified-NTP-launch.inc
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-Simplified-NTP-launch.inc
|
|
@@ -0,0 +1,5 @@
|
|
+CROMITE_FEATURE(kSimplifiedNTP,
|
|
+ "SimplifiedNTP",
|
|
+ base::FEATURE_ENABLED_BY_DEFAULT);
|
|
+
|
|
+SET_CROMITE_FEATURE_DISABLED(kMagicStackAndroid);
|
|
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc
|
|
@@ -0,0 +1 @@
|
|
+BASE_DECLARE_FEATURE(kSimplifiedNTP);
|
|
--
|